給出乙個完全二叉樹,求出該樹的節點個數。
說明:
完全二叉樹的定義如下:在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第 h 層,則該層包含 1~ 2h 個節點。
示例:
輸入:1解題思路:二分法。j假設整個樹的高度為h,根據完全二叉樹的特點:/ \2 3
/ \ /
4 5 6輸出:6
1. 如果右子樹的高度小於左子樹,那麼右子樹是完美二叉樹,高度為h-2。節點個數是(1<2. 如果右子樹的高度等於左子樹,那麼左子樹為完美二叉樹,高度為h-1。節點個數是(1從根結點開始,根據左右子樹的高度總是能夠確定左邊或者右邊的結點個數,然後遞迴到不確定的一端即可。其中求解子樹高度的平均時間是0.5logn,遞迴次數是logn,這樣一來時間複雜度為(log n)*(log n)。
//至少有h-1層是滿樹
int nums = (1 << h - 1) - 1;
node = root;
while (node)
int temp_h = 0;
while (right)
if (temp_h + 1 == h)
else
}return nums;}};
leetcode 222 二分完全二叉樹
解法一 dfs暴力求解 definition for a binary tree node.class treenode def init self,x self.val x self.left none self.right none class solution def countnodes s...
LeetCode 222 完全二叉樹的節點個數
給出乙個完全二叉樹,求出該樹的節點個數。說明 完全二叉樹的定義如下 在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第 h 層,則該層包含 1 2h 個節點。示例 輸入 1 2 3 4 5 6 輸出 6方法一 def...
Leetcode 222 完全二叉樹的節點個數
給出乙個完全二叉樹,求出該樹的節點個數。說明 完全二叉樹 的定義如下 在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第 h 層,則該層包含 1 2h 個節點。示例 輸入 輸出 6 1 public class so...