資料結構(線索二叉樹)

2021-09-22 05:56:56 字數 964 閱讀 4821

線索二叉樹的前序,中序,後序

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.引入線索二叉樹 二叉樹的遍歷實質上是對乙個非線性結構實現線性化的過程,使每乙個節點 除第乙個和最後乙個外 在這些線性序列中有且僅有乙個直接前驅和直接後繼。但在二叉鍊錶儲存結構中,只能找到乙個節點的左 右孩子資訊,而不能直接得到節點在任一遍歷序列中的前驅和後繼資訊。這些資訊只有在遍歷的動態過程中才...