题目:
完全二叉树的节点个数:说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 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 not root:
return 0
left_tree = root
left_tree_node = 0
rigth_tree = root
right_tree_node = 0
while left_tree:
left_tree = left_tree.left
left_tree_node += 1
while rigth_tree:
rigth_tree = rigth_tree.right
right_tree_node += 1
if left_tree_node == right_tree_node:
return 2 ** (left_tree_node) - 1
else:
return self.countNodes(root.left) + self.countNodes(root.right) + 1