求二叉树的叶子数递归算法
时间: 2024-11-20 11:35:39 浏览: 21
递归算法计算二叉树中叶子节点的数目
要使用递归算法来计算二叉树的叶子节点数,可以按照以下步骤进行[^1]:
1. 定义一个函数`Leaves()`,它接收一个二叉树的根节点`t`作为参数。
2. 判断根节点是否为空。如果为空,表示这是一个空树,其叶子节点数为0,直接返回0。
3. 如果根节点的左右子节点都为空(即该节点既是左孩子又是右孩子),那么它是叶子节点,返回1。
4. 否则,对左子树和右子树递归调用`Leaves()`函数,得到各自子树的叶子节点数。
5. 返回当前节点左右子树叶子节点数之和,即整个树的叶子节点数。
具体实现如下:
```csharp
int Leaves(BiTree t) {
if (t == NULL) return 0; // 空节点,叶子节点数为0
else if (t->lchild == NULL && t->rchild == NULL) return 1; // 叶子节点
else {
int count1 = Leaves(t->lchild); // 左子树叶子节点数
int count2 = Leaves(t->rchild); // 右子树叶子节点数
return count1 + count2; // 返回总叶子节点数
}
}
```
这个函数会遍历整个二叉树,直到遇到叶子节点为止,逐层累加叶子节点的数量。
阅读全文