中序線索二叉樹

2021-06-13 23:31:35 字數 704 閱讀 5064

就是在中序遍歷的時候加上線索,為了區分線索和孩子,要多加兩個標誌變數ltag,rtag如果標誌為true就表明是線索,

如果為false就表示孩子;

一般規定是將做指標為空的指標域用來存放直接前驅;

將有指標為空的指標域用來存放直接後繼;當然如果不為空的話就不會用來存放前後繼,而是孩子了

意思就是存放前繼的是左指標,存放後繼的是右指標,一般規定這樣寫,

基本思路是新設兩個結點,乙個頭結點head,乙個輔助結點pre;

頭結點左指標指向根結點,右指標指向某種遍歷順序的最後乙個結點,最後乙個結點的右指標指向頭結點

pre指標讓其一直指向當前結點的直接前驅;

下面是憑感覺寫的,給個思路和思想,沒有測試,如果有錯望指正:

typedef char elem;   

typedef struct node

*tree;

void xiansuotree(tree t)

void bianli(tree p,tree pre) //p為當前結點,pre為當前節點的直接前驅

if(!pre->rchild) //判斷pre的右孩子情況,如果為空則將其有指標指向其直接後繼

pre=p; //保證pre始終為當前結點的直接前驅

bianli(p->rchild,pre); //中序遍歷右子樹

}

二叉樹中序線索

我先說一說 每個 節點 那 五個格 的資料 的含義中間拿乙個是儲存資料的。從左向右 第乙個 和 第五個 是指標,具體指向什麼 取決於第二個 和 第四個的值 第二個 如果是零,實線表示,則 第乙個指向的是 左孩子 第二個 如果是1,虛線表示,則 第乙個 指向的是 在中序遍歷次序下 該節點的前驅 即前乙...

中序線索二叉樹

對於一顆有n個節點的二叉樹,每個節點有2個指標域,共2n個指標域,使用n 1個指標域,二叉線索樹便是將剩下的n 1個指標域也利用起來。在普通二叉樹中,我們僅知道乙個節點的左右孩子,並不知道它的直接前驅節點和直接後驅節點,若能知道它的前驅節點和後去節,便可以將這個資料結構進行遍歷,可極大的提高效率。二...

線索二叉樹 中序

線索二叉樹的抽象資料型別 1 enum pointertag 2 typedef struct threadnode 3bithrnode,bithrtree threaded binary tree node 建立線索二叉樹 1 void createtree bithrtree a 29 els...