编写一个程序完成统计一个二叉树的中叶子结点的个数
时间: 2024-10-07 09:05:26 浏览: 29
C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法
编写一个程序来统计二叉树的中序遍历结果中的叶子节点个数,可以按照递归的方式来进行。首先,我们需要定义一个二叉树节点类,它包含左孩子、右孩子和值的属性。然后,我们可以设计一个函数来计算叶子节点的数量,这个函数会检查当前节点是否为叶子节点,并递归地对左右子树进行同样的操作。
以下是一个Python版本的解决方案:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def count_leaf_nodes(root):
if not root:
return 0
elif not root.left and not root.right: # 判断是否为叶子节点
return 1
else:
# 对左子树和右子树递归计数
return count_leaf_nodes(root.left) + count_leaf_nodes(root.right)
# 使用示例
# 创建一个简单的二叉树结构
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
# 调用函数并打印结果
leaf_count = count_leaf_nodes(root)
print(f"二叉树中叶子节点的个数是: {leaf_count}")
阅读全文