Count Complete Tree Nodes
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def countNodes(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if root == None:
return 0
left = self.getHeight(root.left)
right = self.getHeight(root.right)
if left == right:
return pow(2, left) - 1 + 1 + self.countNodes(root.right) #pow(2, h) - 1满二叉树的节点数目,+ 1根节点.
else:
return pow(2, right) - 1 + 1 + self.countNodes(root.left) #重要的一点就是如果不等,那么right 下面为空
def getHeight(self, root):
if root == None:
return 0
result = 0
while root:
result += 1
root = root.left
return resultLast updated