給出乙個完全二叉樹,求出該樹的節點個數。
說明:完全二叉樹的定義如下:在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第 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 解題思路 二分...