先序遍历发统计叶子结点
时间: 2023-06-28 09:05:42 浏览: 75
叶子结点的遍历
对于一棵二叉树,先序遍历的顺序是先遍历根节点,再遍历左子树,最后遍历右子树。统计叶子结点的方法可以在遍历每个节点时进行判断,如果该节点是叶子节点(即左右子树都为空),则叶子结点数加1。
下面是先序遍历统计叶子结点的示例代码:
```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 root is None:
return 0
if root.left is None and root.right is None:
return 1
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)
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)
print(count_leaf_nodes(root)) # 输出4
```
在上面的示例代码中,先定义了一个`TreeNode`类来表示二叉树的节点,然后定义了一个`count_leaf_nodes`函数来统计叶子结点数。在函数中,先判断当前节点是否为空或是否是叶子节点,如果是则返回1,否则递归遍历左右子树并将结果相加。最后,通过调用`count_leaf_nodes`函数来统计二叉树的叶子结点数。
阅读全文