線索二叉樹

2021-10-24 21:52:49 字數 640 閱讀 7123

通過對二叉樹的約定遍歷方式 可以得到乙個固定的遍歷方式

存放前驅和後繼的空間

每隔乙個結點都有浪費空間 所以我們就將它利用存前驅和後繼

yes 中序遍歷具備這樣的特點

將已經定義好的結構進行擴容

ltag 與 rtag

ltag=0 指向左孩子 =1 指向前驅

前驅 用pre儲存當前結點的前驅

後繼該結點的下乙個

btlink pre;

//全域性變數儲存足跡 結點的前乙個 即前驅 始終指向剛剛訪問過的結點

//中序遍歷線索化

void

inthreading

(btlink t)if(

!pre->right)

//走過去才知道後繼是誰 所以pre是走過的結點指導後繼

pre=t;

inthreading

(t->right)

;// 右子樹

}}

這是乙個線索化的動態過程 在剛開始時pre沒有賦值 所以開始會出現 錯誤 我們定義乙個頭指標

void inoderthreading(btlink t,btlink p)

else

線索二叉樹

當用二叉鍊錶作為二叉樹的儲存結構時,因為每個結點中只有指向其左 右兒子結點的指標,所以從任一結點出發只能直接找到該結點的左 右兒子。在一般情況下靠它無法直接找到該結點在某種遍歷序下的前驅和後繼結點。如果在每個結點中增加指向其前驅和後繼結點的指標,將降低儲存空間的效率。我們可以證明 在n個結點的二叉鍊...

線索二叉樹

1.線索二叉樹結構和操作定義 threadbintree.h 功能 線索標誌域所有值 typedef enumnodeflag 功能 線索二叉樹結構體 typedef struct threadtreethreadbintree 前驅節點指標 threadbintree previous null ...

線索二叉樹

原始碼 中序線索二叉樹 author 菜鳥 version 2014.7.23 include include include typedef char datatype using namespace std 定義線索二叉樹的結構體 typedef struct nodethreadbitreen...