線索二叉樹基礎知識

2021-09-01 05:33:07 字數 898 閱讀 7116

採用某種方法遍歷二叉樹的結果是乙個結點的線性序列。

修改空鏈域改為存放指向結點的前驅和後繼結點的位址。

線索:將二叉鍊錶中的空指標域指向「前驅結點」和「後繼結點」的指標被稱為線索(thread);

線索化:使二叉鍊錶中結點的空鏈域存放其前驅或後繼資訊的過程稱為線索化。

線索二叉樹:加上線索的二叉樹稱為線索二叉樹。

顯然線索二叉樹與採用的遍歷方法相關,有先序線索二叉樹、中序線索二叉樹和後序線索二叉樹。

中序序列:

ltag=0, lchild域指向左孩子ltag=1, lchild域指向其前驅

rtag=0, rchild域指向右孩子rtag=1, rchild域指向其後繼

邏輯結構:集合、線性、樹和圖

物理結構:線性儲存和非線性儲存

其中,線性儲存結構有順序(sequential)、鏈結(linked)、索引(indexed)和雜湊(hashing)4種結構

非線性儲存結構有:樹形儲存結構、圖形儲存結構。

在n個結點的線索二叉樹中,有2n個指標,n-1個子女指標,其餘為線索指標。

以該遍歷方法遍歷一棵二叉樹。

在遍歷的過程中,檢查當前訪問結點的左、右指標域是否為空:

如果左指標域為空,將它改為指向前驅結點的線索;

如果右指標域為空,將它改為指向後繼結點的線索。

遍歷某種次序的線索二叉樹,就是從該次序下的開始結點出發,反覆找到該結點在該次序下的後繼結點,直到頭結點。

線索二叉樹

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