如何在C++中使用结构体和递归算法来计算二叉树的叶子节点数量?请提供代码示例。
时间: 2024-11-20 19:52:24 浏览: 16
在二叉树操作中,计算叶子节点数量是一个常见的问题,递归算法因其简洁和高效而广泛应用于此类问题。首先,通过定义一个结构体`BTreeNode`来表示二叉树的节点,该结构体包含元素值`elem`和指向左右子节点的指针`pleft`及`pright`。以下是使用递归算法计算叶子节点数量的C++实现代码:
参考资源链接:[C++递归与非递归算法:二叉树叶子节点计数详解](https://wenku.csdn.net/doc/6453419aea0840391e778f3e?spm=1055.2569.3001.10343)
```cpp
struct BTreeNode {
int elem; // 节点存储的数据
BTreeNode* pleft; // 指向左子节点的指针
BTreeNode* pright; // 指向右子节点的指针
};
int countLeaves(BTreeNode* root) {
if (root == NULL) {
return 0; // 空树没有叶子节点,返回0
}
if (root->pleft == NULL && root->pright == NULL) {
return 1; // 如果当前节点是叶子节点,返回1
}
// 递归计算左右子树的叶子节点数,然后相加
return countLeaves(root->pleft) + countLeaves(root->pright);
}
int main() {
// 创建二叉树并调用countLeaves函数计算叶子节点数量
// 示例代码省略了二叉树的创建过程
int leafCount = countLeaves(root); // 假设root是指向树根的指针
std::cout <<
参考资源链接:[C++递归与非递归算法:二叉树叶子节点计数详解](https://wenku.csdn.net/doc/6453419aea0840391e778f3e?spm=1055.2569.3001.10343)
阅读全文