(1 2 5 3)線索二叉樹

2021-06-29 03:09:51 字數 879 閱讀 4542

1.定義

n個結點的二叉鍊錶中含有n+1個空指標域。利用二叉鍊錶中的空指標域,存放指向結點在某種遍歷次序下的前趨和後繼結點的指標(這種附加的指標稱為"線索")。

這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹(threaded   binarytree)。根據線索性質的不同,線索二叉樹可分為前序線索二叉樹、中序線索二叉樹和後序線索二叉樹三種。

注意:線索鍊錶解決了二叉鍊錶找左、右孩子困難的問題,出現了無法直接找到該結點在某種遍歷序列中的前趨和後繼結點的問題。

2.線索鍊錶的結點結構

線索鍊錶中的結點結構為: 

其中:ltag和rtag是增加的兩個標誌域,用來區分結點的左、右指標域是指向其左、右孩子的指標,還是指向其前趨或後繼的線索。

3.線索二叉樹的表示

【例】下面(a)圖所示的中序線索二叉樹,其線索鍊錶如下面(b)圖所示。

4.線索二叉樹的建立 

利用p指標和pre指標實現

/*中序遍歷二叉樹,對其進行線索化

*/void

in_order_threading(bittree t)  

if(!pre->rchild) 

//如果上乙個結點的右孩子為空,則將其指向直接後繼。(注意:只有訪問到下乙個結點時,才會知道本結點的後繼是誰)

pre=t;  

in_order_threading(t->rchild); //右孩子線索化

}  }  

線索二叉樹

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