二叉樹在連線儲存表示中,空鏈的數目是大於非空鏈的數目,即在2n個空鏈中,有n+1個是空鏈,如果利用這些空鏈來指向二叉樹其他結點的指標,這結點稱為線索,具體建立線索樹過程:
typedef
struct thread_tree *thread_pointer;
//線索二叉樹結構體
struct thread_tree
;//尋找該結點的後驅結點
thread_pointer insucc(thread_pointer tree)
//中序線索樹遍歷輸出
void tinorder(thread_pointer tree)
}
向上面線索二叉樹中插入結點,假設我們只考慮插入乙個新結點作為結點parent的右兒子情況,那麼我們就有以下兩種情況要考慮:若parent的右兒子為空,則插入新結點後,線索二叉樹變化如下圖:
若parent的右兒子存在右子樹,則插入新結點後,線索二叉樹變化如下圖:
**實現:
void insert_right(thread_pointer parent,thread_pointer child)
}
線索二叉樹
當用二叉鍊錶作為二叉樹的儲存結構時,因為每個結點中只有指向其左 右兒子結點的指標,所以從任一結點出發只能直接找到該結點的左 右兒子。在一般情況下靠它無法直接找到該結點在某種遍歷序下的前驅和後繼結點。如果在每個結點中增加指向其前驅和後繼結點的指標,將降低儲存空間的效率。我們可以證明 在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...