完全二叉树的节点个数222

题目:给出一个完全二叉树,求出该树的节点个数。

说明:

完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

1
2
3
4
5
6
7
8
输入: 
1
/
2 3
/ /
4 5 6

输出: 6

思路:递归

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class :
def __init__(self, x):
self.val = x
self.left = None
self.right = None


class Solution:

def helper(self, root, res):
if root:
res.append(1)
if root.left:
self.helper(root.left, res)
if root.right:
self.helper(root.right, res)

def countNodes(self, root):
"""
:type root: TreeNode
:rtype: int
"""
res = []
self.helper(root, res)
return len(res)

# 例子
tree = TreeNode(3)
left_tree = TreeNode(9)
right_tree = TreeNode(20)
right_tree.left = TreeNode(15)
right_tree.right = TreeNode(7)
tree.left = left_tree
tree.right = right_tree
print(Solution().countNodes(tree))