我們在上一章中,學習了二叉樹的數據結構。因為二叉樹的特殊性,它不同於普通的樹,所以可以使用順序存儲結構來存儲。但是,用順序存儲結構會存在浪費空間的弊端。之后,我們學習了二叉鏈表。用鏈式存儲結構存儲樹,結點結構為一個數據域data,兩個指針域lchild、rchild。樹的數據結構講完 ...
線索二叉樹 threaded binary tree 上圖所示的二叉鏈表,存在多個空指針域。假設一個二叉鏈表的結點數為n,則共有 n個指針域。而n個結點的二叉樹共有n 條分支。所以空指針域的個數為: n n n 。 可以在這n 個空指針域中保存結點的 以先序 中序或后序遍歷的 前驅和后繼指針,這樣在下次遍歷時,可以大大提高速度。 將所有空指針域中的rchild指向它的后繼。 將所有空指針域中的lc ...
2012-11-03 16:04 1 6386 推薦指數:
我們在上一章中,學習了二叉樹的數據結構。因為二叉樹的特殊性,它不同於普通的樹,所以可以使用順序存儲結構來存儲。但是,用順序存儲結構會存在浪費空間的弊端。之后,我們學習了二叉鏈表。用鏈式存儲結構存儲樹,結點結構為一個數據域data,兩個指針域lchild、rchild。樹的數據結構講完 ...
,線索二叉樹就是充分利用二叉樹節點中的空指針,讓它們分別指向本節點的前驅或者后繼。既充分利用了資源,又方便 ...
。 二叉樹線索化可以利用二叉樹中指向左右子樹的空指針來存放節點的前驅和后繼信息可以使用以下結點結構: ...
二叉樹的線索化: 二叉樹是一種非線性結構,遍歷二叉樹幾乎都是通過遞歸或者用棧輔助實現非遞歸的遍歷。用二叉樹作為存儲結構時,取到一個節點,只能獲取節點的左孩子和右孩子,不能直接得到節點的任一遍歷序列的前驅或者后繼。 為了保存這種在遍歷中需要的信息,我們利用二叉樹中指向左右子樹的空指針來存放 ...
1.遍歷前序線索二叉樹 如果當前結點有左孩子,則應該更新p指向左孩子,否則指向右孩子,這與中序遍歷線索二叉樹不同,中序遍歷時,能夠確定當前結點的左子樹一定被訪問過了,直接更新p指向右孩子 2.前序線索化二叉樹 3.刪除線索二叉樹所占空間 ...
后序線索二叉樹中,結點的后繼: 如果結點的雙親有右孩子,則結點的后繼為雙親的右子樹中第一個被訪問的結點 如果結點的雙親沒有右孩子,則結點的后繼為雙親 如果結點為雙親的右孩子,則結點的后繼為雙親 因為找到后序遍歷中,找到結點的后繼需要知道節點的雙親,所以可以用三叉鏈表 ...
線索二叉樹 基本概念: n個結點的二叉鏈表中共有2n個鏈域,但只有n-1個有用的非空鏈域,其余n+1個是空的,利用這n+1個空鏈域來存放遍歷過程中結點的前驅和后繼;規定:若結點有左子樹,則其LChild指向左孩子,否則LCHild指向 ...
2018-11-20-18:25:23 一:二叉樹 1.二叉樹的性質 ①:在二叉樹的第i層上至多有pow(2,i-1)個結點(i>=1)。 ②:深度為k的二叉樹至多有pow(2,k)-1個結點(k>=1)。 ③:對任何一顆二叉樹T,如果其終端結點的個數為n0,度 ...