python实现二叉树里面求叶子节点的算法
叶子节点概念:
一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称“叶子”。 叶子是指度为0的结点,又称为终端结点。
图形:
这个二叉树有五个叶子节点,分别为7,8,9,5,6.
实现:
def leaf(self,root):
if root==None:
return 0 #当二叉树为空时直接返回0
elif root.left==None and root.right==None:
return 1 ##当二叉树只有一个根,但是无左右孩子时,根节点就是一个叶子节点
else:
return (self.leaf(root.left)+self.leaf(root.right)) #其他情况就需要根据递归来实现
tree=Tree()
tree.add(1)
tree.add(2)
tree.add(3)
tree.add(4)
tree.add(5)
tree.add(6)
tree.add(7)
tree.add(8)
tree.add(9)
print(" ")
print("叶子节点的个数为:")
num=tree.leaf(tree.root)
print(num)
这里的add方法在上面一起有实现,这篇文章中就直接调用了这个add方法