1、線索二叉樹的基本概念:
在二叉樹的每個結點中增加兩個指標域,用於存放遍歷二叉樹時得到的直接前驅和直接後繼的資訊。
2、線索二叉樹的結點構造:
ltag=0時,表示lchild指向結點的左孩子,lchild是乙個指標(結點有左孩子)
ltag=1時,表示lchild指向結點的直接前驅,lchild是乙個線索(結點無左孩子)
rtag=0時,表示rchild指向結點的右孩子(結點有右孩子)
rtag=1時,表示rchild指向結點的直接後繼(結點無右孩子)
線索二叉樹的結點定義:
typedef struct tnodetnode;
3、以p為根結點的二叉樹中序線索化:
void inthread (tnode *p,*pre)
else p->ltag=0;
if(!pre->rchild&&pre!=null)
else pre->rtag=0;
pre=p;
inthread(p->rchild,pre);
}
線索化二叉樹以及遍歷線索化二叉樹
1.線索二叉樹基本介紹 n個結點的二叉鍊錶中含有n 1 公式 2n n 1 n 1 個空指標域。利用二叉鍊錶中的空指標域,存放指向該結點在某種遍歷次序下的前驅和後繼結點的指標 這種附加的指標稱為 線索 這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹 threaded binaryt...
(C )二叉樹的線索化 線索二叉樹
線索化標誌tag enum pointertag 結點結構 template struct binarytreenodethd 基類迭代器 template struct binarytreeiterator t operator t operator bool operator const sel...
線索二叉樹的線索化演算法
在嚴蔚敏的 資料結構 一書中,所使用的 存在一些小問題。原版 就不附上了,主要問題是 1.inthreading函式的引數,應該攜帶pre,這應該是比較嚴重的問題。如果沒有攜帶pre,則對pre的修改只是在呼叫的函式中的區域性變數的值的修改,沒有影響到原來的pre的值。2.在條件語句中,將命中概率高...