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

時間 2021-06-06 11:13:19

1樓:一鯨

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 + 1) & sr);

return (

sl >= sr &&

sl <= sr * 2 + 1 &&

(fl || frsl + sr + 1 : -1;

} return 0;

}const isComplete = root => completeSize(root) >= 0;

2樓:趙馮平

統計樹的節點個數n,求樹的高度h,如果2的h次方減一等於n,那麼給出的樹就是滿二叉樹。

用順序儲存(陣列)儲存此二叉樹,然後檢查陣列,就可以發現是不是完全二叉樹。

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

一名 1 先明確完全二叉樹的概念。先上圖!完全二叉樹分為樓主所說的 圖1就是了 還有一種完全二叉樹是圖2。圖2也是完全二叉樹!圖2也是完全二叉樹!圖2也是完全二叉樹!概念 完全二叉樹分為兩種,1 最後一層沒有滿,那麼最後一層的節點都得在左邊。2 最後一層滿了,那就得全滿才行,圖2。完全二叉樹就這麼個...

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

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

二叉樹可以是monad嗎?

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