二叉樹的學習

2022-01-24 02:08:11 字數 1201 閱讀 1890

二叉樹的劃分

二叉樹分為 一般二叉樹,滿二叉樹,完全二叉樹。

一般二叉樹就是普通的二叉樹。

滿二叉樹,是所有節點全部存滿的二叉樹。

完全二叉樹是在滿二叉樹的前提下,從右邊砍掉一些節點的結果。為什麼要有完全二叉樹,是因為二叉樹需要轉換成線性結構儲存。

普通樹轉換為二叉樹

上面是普通樹,下面是轉換後的二叉樹

轉換遵循: 左子樹為它的孩子(childen子節點),右子樹為它的兄弟(就是旁邊的節點)。

轉換後就是這樣,這個轉換比較精妙。另外森型別的轉換也和這個轉換一樣。

二叉樹的先序遍歷,中序遍歷,後序遍歷

先序遍歷的規則是:自己-左子樹-右子樹

中序遍歷:左子樹-自己-右子樹

後序遍歷是:左子樹-右子樹-自己

可以發現,都是按照先序遍歷的標準,然後調換順序。

以上圖為例

先序遍歷:a-b-d-e-c-f-g-h

中序遍歷:d-b-e-a-f-c-g-h

後序遍歷:d-e-b-f-h-g-c-a

主要還是用遞迴程式的思路去想,容易理解一些。它是一層一層的

知道兩種遍歷結果,求樹的形狀

據說面試經常面這個。。不過只是據說。。

必須是知道先序,中序或者中序,後序的情況下。才能還原二叉樹

為什麼?因為只知道一種遍歷情況,不知道接下去的情況是左子樹遍歷完了,已經遍歷到右子樹了,還是左子樹沒遍歷完。

而只知道先序,後序的時候,無法分辨誰是最外側的左子樹,和最外側的右子樹。所以不行

知道先序,中序 求樹的形狀

後續和中序,只要知道後續最後乙個肯定是最外面的根。以此類推就行了。

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

二叉樹 48 二叉樹 二叉樹的高度

目的 使用c 模板設計並逐步完善二叉樹的抽象資料型別 adt 內容 1 請參照鍊錶的adt模板,設計二叉樹並逐步完善的抽象資料型別。由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在乙個原始檔內。在實際的設計中,推薦將抽象類及對應的派生類分別放在單獨的標頭檔案中。參考教材 課件,以及網盤中的鍊錶...