前言 樹是數據結構中的重中之重,尤其以各類二叉樹為學習的難點。一直以來,對於樹的掌握都是模棱兩可的狀態,現在希望通過寫一個關於二叉樹的專題系列。在學習與總結的同時更加深入的了解掌握二叉樹。本系列文章將着重介紹一般二叉樹、完全二叉樹、滿二叉樹、線索二叉樹、霍夫曼樹、二叉排序樹、平衡二叉樹 ...
.產生背景 現在有一棵節點數目為 n 的二叉樹,采用二叉鏈表的形式存儲。對於每個節點均有指向左右孩子的兩個指針域。而節點為 n 的二叉樹一共有 n 條有效分支路徑。那么二叉鏈表中一共 存在 n n n 個空指針域。那么這些空指針域造成了空間浪費。 如圖:所示一棵二叉樹一共有 個節點,空指針有 個 此外,當對二叉樹進行中序遍歷時可以得到二叉樹的中序列。例如上圖中二叉樹中序遍歷結果為 HDIBJEA ...
2019-09-30 15:26 0 476 推薦指數:
前言 樹是數據結構中的重中之重,尤其以各類二叉樹為學習的難點。一直以來,對於樹的掌握都是模棱兩可的狀態,現在希望通過寫一個關於二叉樹的專題系列。在學習與總結的同時更加深入的了解掌握二叉樹。本系列文章將着重介紹一般二叉樹、完全二叉樹、滿二叉樹、線索二叉樹、霍夫曼樹、二叉排序樹、平衡二叉樹 ...
我們在上一章中,學習了二叉樹的數據結構。因為二叉樹的特殊性,它不同於普通的樹,所以可以使用順序存儲結構來存儲。但是,用順序存儲結構會存在浪費空間的弊端。之后,我們學習了二叉鏈表。用鏈式存儲結構存儲樹,結點結構為一個數據域data,兩個指針域lchild、rchild。樹的數據結構講完 ...
線索二叉樹 (threaded binary tree) 上圖所示的二叉鏈表,存在多個空指針域。假設一個二叉鏈表的結點數為n,則共有2n個指針域。而n個結點的二叉樹共有n-1條分支。所以空指針域的個數為:2n - (n-1) = n+1。 可以在這 ...
,線索二叉樹就是充分利用二叉樹節點中的空指針,讓它們分別指向本節點的前驅或者后繼。既充分利用了資源,又方便 ...
。 二叉樹線索化可以利用二叉樹中指向左右子樹的空指針來存放節點的前驅和后繼信息可以使用以下結點結構: ...
二叉樹的線索化: 二叉樹是一種非線性結構,遍歷二叉樹幾乎都是通過遞歸或者用棧輔助實現非遞歸的遍歷。用二叉樹作為存儲結構時,取到一個節點,只能獲取節點的左孩子和右孩子,不能直接得到節點的任一遍歷序列的前驅或者后繼。 為了保存這種在遍歷中需要的信息,我們利用二叉樹中指向左右子樹的空指針來存放 ...
1.遍歷前序線索二叉樹 如果當前結點有左孩子,則應該更新p指向左孩子,否則指向右孩子,這與中序遍歷線索二叉樹不同,中序遍歷時,能夠確定當前結點的左子樹一定被訪問過了,直接更新p指向右孩子 2.前序線索化二叉樹 3.刪除線索二叉樹所占空間 ...
后序線索二叉樹中,結點的后繼: 如果結點的雙親有右孩子,則結點的后繼為雙親的右子樹中第一個被訪問的結點 如果結點的雙親沒有右孩子,則結點的后繼為雙親 如果結點為雙親的右孩子,則結點的后繼為雙親 因為找到后序遍歷中,找到結點的后繼需要知道節點的雙親,所以可以用三叉鏈表 ...