線索化二叉樹

2021-10-22 11:54:28 字數 834 閱讀 4672

希望充分利用各個節點的左右指標,讓各個節點可以指向自己的前後節點。

基本介紹:

二叉鍊錶中的空指標域,存放指向該節點在某種遍歷次序下的前驅和後繼點的指標。

線索二叉樹之後,node節點的屬性有left和right,left可能指向左子樹或者前驅節點,right可能指向右子樹或者後繼節點。

中序線索二叉樹基本思路:

在二叉樹類中要定義乙個pre指標,作為保留的前乙個節點。

在node類中建立型別lefttype, righttype

1. lefttype = 0,指向左子樹,lefttype = 1,指向前驅節點。

2. righttype = 0,指向右子樹,righttype = 1,指向後繼節點。

建立函式,傳入引數node

判斷node是否為空,為空則不能線索化

先線索化左子樹(遞迴node.left)

線索化當前節點

當node的左後繼節點為空時,將當前節點左指標指向pre,並設定為左指標型別。

當當前node的pre不為空且pre.right指標為空時,讓前驅節點的右指標指向當前節點,並設定pre的右指標型別。

每處理乙個節點後,讓當前節點是下乙個節點的前驅節點。(pre = node)

線索化右子樹(遞迴node.right)

思路:定義乙個變數,儲存當前遍歷的節點

node不為空的情況下:

當lefttype = 0時,node = node.left

列印這個節點

若當前節點右指標指向後繼節點,就一直輸出

不指向後繼節點時替換遍歷的點(node = node.right)

線索化二叉樹以及遍歷線索化二叉樹

1.線索二叉樹基本介紹 n個結點的二叉鍊錶中含有n 1 公式 2n n 1 n 1 個空指標域。利用二叉鍊錶中的空指標域,存放指向該結點在某種遍歷次序下的前驅和後繼結點的指標 這種附加的指標稱為 線索 這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹 threaded binaryt...

線索化二叉樹

define crt secure no warnings 1 includeusing namespace std enum pointertag 列舉 其結構如下 void prevorderthreading 前序 void postorderthreading 後序 void inorder...

線索化二叉樹

二叉樹是一種非線性結構,遍歷二叉樹幾乎都是通過遞迴或者用棧輔助實現非遞迴的遍歷。用二叉樹作為儲存結構時,取到乙個節點,只能獲取節點的左孩子和右孩子,不能直接得到節點的任一遍歷序列的前驅或者後繼。為了儲存這種在遍歷中需要的資訊,我們利用二叉樹中指向左右子樹的空指標來存放節點的前驅和後繼資訊.二叉樹的結...