【基本思路】
可以利用完全二叉树的性质,首先判断头节点的右子树的最左节点是否和头节点的最左节点在同一层。
如果在的话,说明头节点的左子树是一棵满二叉树,可以用公式计算出左子树的节点个数,再加上头节点,也就是(2^h-1)+1,接下来再计算右子树的个数,可以用递归的方式求出来。
同理,如果头节点的右子树的最左节点和头节点的最左节点不在同一层,则右子树是一棵满二叉树,可以用公式计算出右子树的节点个数,再加上头节点,也就是(2^(h-1)-1)+1,接下来再计算左子树的个数,可以用递归的方式求出来。
#python3.5
#统计完全二叉树的节点个数
def nodeNum(head):
def getHeight(head, level):
while head:
level += 1