1. 程式人生 > >線索二叉樹基礎知識

線索二叉樹基礎知識

相關概念

採用某種方法遍歷二叉樹的結果是一個結點的線性序列。
修改空鏈域改為存放指向結點的前驅和後繼結點的地址。
線索:將二叉連結串列中的空指標域指向“前驅結點”和“後繼結點”的指標被稱為線索(thread);
線索化:使二叉連結串列中結點的空鏈域存放其前驅或後繼資訊的過程稱為線索化。
線索二叉樹:加上線索的二叉樹稱為線索二叉樹。
顯然線索二叉樹與採用的遍歷方法相關,有先序線索二叉樹、中序線索二叉樹和後序線索二叉樹。
在這裡插入圖片描述
中序序列:
D, B, H, E, A, F, C, G

結點結構

在這裡插入圖片描述

LTag=0, lchild域指向左孩子LTag=1, lchild域指向其前驅
RTag=0, rchild域指向右孩子RTag=1, rchild域指向其後繼

線索二叉樹是一種物理結構

邏輯結構:集合、線性、樹和圖
物理結構:線性儲存和非線性儲存
其中,線性儲存結構有順序(sequential)、連結(linked)、索引(indexed)和雜湊(hashing)4種結構
非線性儲存結構有:樹形儲存結構、圖形儲存結構。

在n個結點的線索二叉樹中,線索數目是n+1

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

建立某種次序的線索二叉樹過程:

以該遍歷方法遍歷一棵二叉樹。
在遍歷的過程中,檢查當前訪問結點的左、右指標域是否為空:
如果左指標域為空,將它改為指向前驅結點的線索;
如果右指標域為空,將它改為指向後繼結點的線索。

遍歷線索化二叉樹

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