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

2021-10-10 19:18:23 字數 1068 閱讀 4088

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

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

# 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(self, root: treenode) -> int:

if root is none:

return 0

level = 0

node = root

while node.left:

node = node.left

level += 1

low, hi = 1 << level, (1 << (level + 1)) - 1

res = low

while low < hi:

mid = (hi - low+1) // 2 + low

if self.exist(root, level, mid):

res = mid

low = mid

else:

hi = mid - 1

return res

def exist(self, root, level, k):

bits = 1 << (level - 1)

node = root

while node is not none and bits > 0:

if bits & k == 0:

node = node.left

else:

node = node.right

bits >>= 1

return node is not none

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 解題思路 二分...