void postthread()//後序線索化
//後序線索化的遍歷
void postsort()
if (cur && (cur->_righttag == thread))//當cur無右孩子時,cur就可以被訪問了
if (cur == _root&&cur->_right == null)//當根節點被訪問時,遍歷完成
cur = cur->_right;
//當cur的右孩子被訪問過了,cur就可以被訪問了。並且可知cur無後繼,所以開始尋找cur的根節點
while (cur && cur->_right == lastvisited)
}//while處理的情況是:當cur是通過其右孩子找到時
} }protected:
//遞迴建立二叉樹
void _creatbintreethreading(bintreethingnode*&root, const char *&str)
}} //找當前節點的根節點
void _parent(bintreethingnode *&root,bintreethingnode **child)
if (root)
if (root->_lefttag == link)
if (tmp == *child&&root->_righttag == link)
} }
//後序線索化的實現
void _postoderthread(bintreethingnode*&cur, bintreethingnode*&prev)
if (cur->_righttag == link)
if (cur->_left == null)
if (prev&&prev->_right == null)
prev = cur;
} }private:
bintreethingnode*_root;
};
詳解 前 中 後序線索化二叉樹及其遍歷
前序線索化二叉樹是在二叉樹前序遍歷的過程中對其進行線索化,將葉子節點和單分支節點的指標域線索化成其前驅和後繼,利用遞迴的特點,並且定義兩個節點指標,乙個在前乙個在後,在中序遍歷的過程中通過這兩個前後指標建立前驅後繼的連線關係。實現 前序線索化二叉樹 void prethbinarytree btth...
線索化二叉樹以及遍歷線索化二叉樹
1.線索二叉樹基本介紹 n個結點的二叉鍊錶中含有n 1 公式 2n n 1 n 1 個空指標域。利用二叉鍊錶中的空指標域,存放指向該結點在某種遍歷次序下的前驅和後繼結點的指標 這種附加的指標稱為 線索 這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹 threaded binaryt...
前序 中序和後序線索化二叉樹及其遍歷
線索化 二叉樹的左子節點指向的是 前驅節點 右子節點指向的是 後繼節點 二叉樹的線索化有三種 前序 中序和後序線索化,見下圖 下面是實現前序 中序和後序線索化的 實現 實現 定義node節點類 class heronode 構建二叉樹 定義threadedbinarytree 實現了線索化功能的二叉...