leetcode 958 二叉樹的完全性檢驗

2021-10-19 13:38:37 字數 1297 閱讀 3154

958. 二叉樹的完全性檢驗

難度中等

給定乙個二叉樹,確定它是否是乙個完全二叉樹。

若設二叉樹的深度為 h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h 層所有的結點都連續集中在最左邊,這就是完全二叉樹。(注:第 h 層可能包含 1~ 2h 個節點。)

示例 1:

輸入:[1,2,3,4,5,6]

輸出:true

解釋:最後一層前的每一層都是滿的(即,結點值為 和 的兩層),且最後一層中的所有結點()都盡可能地向左。

示例 2:

輸入:[1,2,3,4,5,null,7]

輸出:false

解釋:值為 7 的結點沒有盡可能靠向左側。

樹中將會有 1 到 100 個結點。

第乙個節點從1開始,如果父節點是n,那麼左子節點的位置就是2*n,右子節點的位置就算2*n+1。 由於完全二叉樹,節點按層次列印下來,順序一定不會有空缺,那麼可以根據這個規律,寫出對應的**。

將節點的值設定為層次遍歷的順序位置。相當於陣列轉換成樹那種方法的下標+1。

將節點依次入容器,如果容器的最後乙個節點的值與下標+1位置不相等,說明中間一定出現了空缺。那麼這一定不是完全二叉樹。

重複步驟2即可。

struct treenode 

treenode(int x) : val(x), left(nullptr), right(nullptr) {}

treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

};class solution

if (nodes[i]->right)

i++;

} return nodes[nodes.size() - 1]->val == nodes.size();

} void print(vector< treenode *> nodes)

cout << endl;

}};int main()

Leetcode 958 二叉樹的完全性檢驗

給定乙個二叉樹,確定它是否是乙個完全二叉樹 若設二叉樹的深度為h,除第h層外,其他各層 1 h 1 的結點數都達到最大個數,第h層所有的結點都連續集中在最左邊,這就是完全二叉樹。注 第h層可能包含1 2 h個節點 示例1 輸入 1,2,3,4,5,6 輸出 true 解釋 最後一層前的每一層都是滿的...

LeetCode958 二叉樹的完全性檢驗

給定乙個二叉樹的 root 確定它是否是乙個 完全二叉樹 在乙個 完全二叉樹 中,除了最後乙個關卡外,所有關卡都是完全被填滿的,並且最後乙個關卡中的所有節點都是盡可能靠左的。它可以包含 1 到 2 節點之間的最後一級 h 示例 1 輸入 root 1,2,3,4,5,6 輸出 true 解釋 最後一...

leetcode 二叉樹 對稱二叉樹

給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3 方法一 遞迴 思路 如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的 兩個樹互為映象的...