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

2021-10-23 19:17:43 字數 1235 閱讀 2875

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

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

示例:輸入:1

/ \2 3

/ \ /

4 5 6

輸出: 6

最容易想到的實現,計算出左子樹的節點個數,計算出右子樹的節點個數,然後兩個結果相加再加上根節點個數。

**:

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

return

countnodes

(root.left)

+countnodes

(root.right)+1

;}

第二種方法:第一種方法雖然實現簡單,但是沒有用到題目所給出的完全二叉樹的特點,完全二叉樹最後一層如果沒填滿,那麼節點都集中在左邊,並且其餘層的節點都是滿的。所以,如果左子樹的深度就和右子樹的深度相等,那麼左子樹是滿二叉樹,那麼,反過來,兩者深度不等,那麼右子樹就是完全二叉樹,需要計算出左子樹的節點個數。完全二叉樹的節點個數等於2^n-1

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

int left =

getdepth

(root.left)

;//獲取左子樹的深度

int right =

getdepth

(root.right)

;//獲取右子樹的深度

int res =0;

if(left==right)

else

return res;

}public

intgetdepth

(treenode node)

return math.

max(

getdepth

(node.left)

,getdepth

(node.right))+

1;}}

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 個節點。示例 輸入 1 2 3 4 5 6輸出 6 解題思路 二分...