線索二叉樹的前序,中序,後序
typedef struct nodenode;
// 前序線索二叉樹
/* 參照中序即可
*/ void prethread(node* p, node* pre)
if(pre != null && pre->rchild == null)
pre = p;
if(p->ltag == 0)
prethread(p->lchild, pre); // 處理左子樹
if(p->rtag == 0)
prethread(p->rchild, pre); // 處理右子樹
} } void pre(node* p)
printf("%d ", q->data); // 線索必訪問
p = p->rchild; // 左孩子已經不存在,則看右孩子
} }}// 中序線索二叉樹
/* pre表示p的前驅,則pre->rchild = p; p->lchild = pre (pre存在)
p 離開該節點, pre = p;
*/ void inthread(node* p, node* pre)
if(pre != null && pre->rchild == null)
pre = p;
inthread(p->rchild, pre); // 處理右子樹
} } void *first(node* p)
void *next(node* p)
void in(node* p)
// 後序線索二叉樹
/* 參照中序即可
*/ void postthread(node* pre, node* p)
if(pre != null && pre->rchild == null)
pre = p;
} }
線索二叉樹 資料結構
按照教材進行中序二叉樹線索化 線索化就是就將二叉樹的多出來的n 1個鏈域用做指向前驅和後繼用,前驅後繼指的是按中序遍歷二叉樹產生的前驅和後繼 ltag 0 有左孩子 ltag 1 無左孩子,指向前驅 rtag 0 有右孩子 rtag 1 無右孩子,指向後繼 例子 構造二叉樹 形如abc de fg ...
資料結構 線索二叉樹
1.定義 在二叉樹的結點上加上線索的二叉樹稱為線索二叉樹,對二叉樹以某種遍歷方式 前序 中序 後序或層序 進行遍歷,使其變為線索二叉樹的過程稱為對二叉樹進行線索化。2.本質 二叉樹的遍歷實質上是對乙個非線性結構進行線性化的過程,它使得每個結點 除第乙個和最後乙個 在這些線性序列中有且僅有乙個直接前驅...
二叉樹的中序線索樹 資料結構 線索二叉樹
1.引入線索二叉樹 二叉樹的遍歷實質上是對乙個非線性結構實現線性化的過程,使每乙個節點 除第乙個和最後乙個外 在這些線性序列中有且僅有乙個直接前驅和直接後繼。但在二叉鍊錶儲存結構中,只能找到乙個節點的左 右孩子資訊,而不能直接得到節點在任一遍歷序列中的前驅和後繼資訊。這些資訊只有在遍歷的動態過程中才...