線索二叉樹遍歷

2021-09-25 04:51:10 字數 805 閱讀 2737

1.對二叉樹線索化之後,若結點沒有右子樹,則右子樹指向遍歷後繼結點;若沒有左子樹,則左子樹指向遍歷前驅結點。

2.對線索二叉樹進行遍歷,即不斷找結點的後繼。

若右指標直接指向了後繼,那直接就有了;

結點右指標沒有指向後繼,即有右子節點,那就通過常規方法找到後繼。如後序線索樹後繼不好找,需要棧才能進行遍歷。

3.不同二叉樹線索化之後區別(討論左右結點均存在情況):

中序線索二叉樹(lnr):

既方便尋到前驅也方便尋到後繼。即使左右結點均存在也能找到相應的前驅和後繼,前驅就是左子樹右下,後繼就是右子樹左下。

先序線索二叉樹(nlr):

方便找到後繼,但前驅不好找,因為若左指標沒有直接指向前驅,它的前驅可能需要知道雙親結點。如樹1,若想得到c的前驅b,需有a的位址,但並沒有存放雙親結點的地方。

後序線索二叉樹(lrn):

方便找到前驅,後繼不太好找,因為若右指標沒有直接指向後繼,它的後繼可能需要知道雙親結點。如樹2,若想找到b的後繼a,需要有雙親結點位址,同先序一樣道理。

a                      a

/ \ \

b c b

/ \

d c

樹1:先序abcd 樹2:後序cba

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

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

遍歷線索化二叉樹

常規的線索化方式 採用遞迴地呼叫的方式,判定條件是當前指標的左子樹是否為空 實現 public void midorder system.out.println this if this right null 對比 但是對二叉樹進行線索化之後,不存在空的左右指標,但是單獨設定每乙個指標的型別,故而條...

二叉樹的遍歷和線索二叉樹

二叉樹的遍歷,所謂二叉樹的遍歷,是指按某條搜尋路徑訪問樹中的每個結點,使得每個結點均被訪問一次,而且僅被訪問一次。由二叉樹的遞迴定義可知,遍歷一棵二叉樹便要決定對根結點n,左子樹l和右子樹r的訪問順序。按照先遍歷再遍歷右子樹的原則,常見的遍歷次序有先,中,後三種遍歷方法,其中序指的是根結點再何時被訪...