Leetcode 222 完全二叉樹的節點個數

2021-09-01 17:59:34 字數 886 閱讀 8857

給出乙個完全二叉樹,求出該樹的節點個數。

說明:

完全二叉樹的定義如下:在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第 h 層,則該層包含 1~ 2h 個節點。

示例:

輸入:1

/ \2 3

/ \ /

4 5 6輸出:6

解題思路:二分法。j假設整個樹的高度為h,根據完全二叉樹的特點:

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...