線索二叉樹的回顧

2021-10-11 00:24:39 字數 772 閱讀 1488

常見的二叉樹中只存在根與子樹之間的關係,為了了解二叉樹中前繼後繼的關係,我們就需要了解線索二叉樹的知識。

線索二叉樹可以加快尋找各個結點前繼結點與後繼結點速度。

上圖為乙個二叉鍊錶結構,即二叉樹的鏈式儲存結構,可以發現存在著空指標,當結點數為n時,空指標的數目為n+1個。

我們通過線索化的過程規定為:

若某結點無左子樹,則將其左指標指向其前驅結點;若某結點無右子樹,則將右指標指向其後繼結點。

上圖根據先序遍歷的順序為:1,2,4,5,3,6

根據線索化,可知,當訪問結點1和2時,沒有任何指標變化,因為它們都存在左右子樹。

當訪問結點4時,其沒有左子樹,所以左指標指向其前驅結點2,同時沒有右子樹,所以右指標指向其後繼節點5。

當訪問結點5時,同理,其沒有左子樹,所以左指標指向其前驅結點4,同時沒有右子樹,所以右指標指向其後繼結點3。

當訪問結點3時,其存在左子樹,而不存在右子樹,所以其右指標指向其後繼結點6。

當訪問結點6時,由於其也是左右子樹均不存在,所以其左指標指向其前驅結點3,其右指標應該指向其後繼節點,但是由於不存在後繼結點所以這裡如下圖所示:

綜上所述,整個二叉樹的線索化過程從步驟1一直到步驟6.

(C )二叉樹的線索化 線索二叉樹

線索化標誌tag enum pointertag 結點結構 template struct binarytreenodethd 基類迭代器 template struct binarytreeiterator t operator t operator bool operator const sel...

線索二叉樹

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

線索二叉樹

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