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

2021-10-06 22:42:13 字數 966 閱讀 5871

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

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

示例:輸入:1/

2 3/ \ /

4 5 6

輸出: 6

class

solution

:def

countnodes

(self, root: treenode)

->

int:

'''利用bfs求出二叉樹的層數,利用完全二叉樹的性質'''

level =

0# 記錄層數

dq = collections.deque(

)# 輔助佇列

ifnot root:

return

0 count =

1# 記錄每一層的節點數

end =

0# 最後一層地節點數

while dq:

level +=

1 m =

0# 記錄下一層的節點數,賦給count

end =0#

while count !=0:

v = dq.popleft(

) end +=

1 count -=

1if v.left:

m +=

1if v.right:

m +=

1 count = m

return

(end +(1

-2**(level-1)

)//(-

1))# 利用等比數列的性質求level-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 解題思路 二分...