编写递归算法,计算二叉树中叶子结点的数目。
时间: 2024-05-14 18:17:01 浏览: 92
好的,您的问题是如何编写递归算法来计算二叉树中叶子节点的数目。
首先,我们可以定义一个叶子节点的概念:如果当前节点没有左右子节点,那么它就是一个叶子节点。基于这个概念,我们可以编写如下的递归算法:
1. 如果当前节点为空,返回0。
2. 如果当前节点是叶子节点,返回1。
3. 如果当前节点有左子节点和右子节点,分别递归计算左子树和右子树中的叶子节点数量,并将两者的和作为当前节点的叶子节点数量。
具体实现可以参考以下代码:
```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: TreeNode) -> int:
if root is None:
return 0
if root.left is None and root.right is None:
return 1
left_leaves = count_leaf_nodes(root.left)
right_leaves = count_leaf_nodes(root.right)
return left_leaves + right_leaves
```
该算法的时间复杂度是O(n),其中n是二叉树中的节点数量。
阅读全文