為什麼說「滿二叉樹也是完全二叉樹」?

時間 2021-05-30 23:58:25

1樓:一名

1、先明確完全二叉樹的概念。先上圖!完全二叉樹分為樓主所說的(圖1就是了),還有一種完全二叉樹是圖2。

圖2也是完全二叉樹!圖2也是完全二叉樹!圖2也是完全二叉樹!

概念:完全二叉樹分為兩種,1、最後一層沒有滿,那麼最後一層的節點都得在左邊。2、最後一層滿了,那就得全滿才行,圖2。 完全二叉樹就這麼個事兒。

2、下面說說:為什麼國內大都說滿二叉樹一定是完全二叉樹呢? 注意,我說的是國內!

國內的滿二叉樹: 如果有h層,那麼節點一定是(2^h-1)。這句話什麼意思呢?上圖!

每一層的節點數加起來是乙個等比數列求和,在圖左邊。看明白了吧,每一層都滿的情況下,就是國內的滿二叉樹了。

結論:在國內,滿二叉樹一定是完全二叉樹,反之卻不成立。

3、補充下完美二叉樹和滿二叉樹。

完美二叉樹,是每一層都滿的情況,這個大都沒有異議。

關鍵在這個滿二叉樹,國內定義在2中已經說了,國外的滿二叉樹卻不是這樣。

國外滿二叉樹:說白了判斷就乙個標準,看有沒有度為1的節點,有則不是國外滿二叉樹,反之則是。簡單畫兩個圖吧

PS:國內有些地方也把滿二叉樹看做完美二叉樹,原因就是2中所講的了。

個人覺得國內的不大妥當,老外既然給了完美二叉樹和滿二叉樹兩個概念,那還是有區別的。

2樓:fanfan

沒毛病啊題主,分析一下這句話,就像是說女廁所也是廁所乙個道理啊這句話說的意思是滿二叉樹屬於完全二叉樹的乙個特例,但並沒有說完全二叉樹是滿二叉樹

也就是所謂的必要不充分條件

也就是說是包含和被包含、子集合和父集合的關係

3樓:Mr.北田共

在一本教材書中,對滿二叉樹與完全二叉樹這樣定義,滿二叉樹是指除最後一層外,每一層上的所有節點都有兩個字節點的二叉樹。 完全二叉樹是指除最後一層外,每一層上的節點數均達到最大值,在最後一層上只缺少右邊的若干節點的二叉樹。 也就是說,滿二叉樹最後一層右邊的節點是存在的,所以滿二叉樹為什麼一定是完全二叉樹呢求大佬幫解

4樓:周大俠

最近看了一本書,如果根據樓主的提問邏輯來分析,我覺得這本書上的定義比較符合。

滿二叉樹:二叉樹中的每個結點恰好有兩個孩子結點切所有葉子結點都在同一層。

按照如上定義來推滿二叉樹是完全二叉樹。

5樓:

國內張孝乃2023年編寫的老教材--《演算法與資料結構-C語言描述》

裡面是這樣定義的:

1.滿二叉樹:任何結點或者是樹葉或者有兩棵非空子樹2.完全二叉樹:從左到右依次填充

定義與國外相同

6樓:william lee

滿二叉樹通俗理解如下:乙個結點要麼是葉結點,要麼是有兩個子結點的中間結點。

完全二叉樹通俗理解如下:從根結點開始,依次從左到右填充樹結點。由此可見,滿二叉樹和完全二叉樹沒有特別的關係。

7樓:吳照

《演算法導論》第3版P690有定義如下:

滿二叉樹:每個節點是葉節點或者度為2.

完全二叉樹:所有葉節點深度相同,且所有內部節點度為2. (樹的節點總數達到最大)

我發現,不同的書籍對「滿二叉樹」,「完全二叉樹」定義不一樣啊

2021 04 11 判斷二叉樹是否是完全二叉樹?

一鯨 const completeSize node node const sl completeSize left if sl 0 return 1 const sr completeSize right if sr 0 return 1 const fl sl 1 sl const fr sr ...

delete二叉樹根節點,會一次清空二叉樹占用的記憶體嗎?

一頁書 你需要自己實現析構函式。假設你的節點定義是這樣 struct TreeNode TreeNode TreeNode if right nullptr 魚你太美 上面幾樓的答案都是錯的。其實這不就是乙個深度優先 後序遍歷訪問每乙個結點的過程嗎,只不過訪問結點的方式改成了delete而已。析構根...

二叉樹可以是monad嗎?

dreday 其實list也可以不是concat,也可以concat後reverse,這樣做就出現另乙個monad了。head就比較奇怪了,如果bind返回是空的話就報錯了。我的理解是,不是二叉樹是不是monad,而是二叉樹實現了bind,fmap這兩個方法後二叉樹就是monad了。monad其實是...