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 方法一 遞迴 思路 如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的 兩個樹互為映象的...