以二叉链表作为二叉树的存储结构,假设二叉树中每个结点的值为单 个字符,设计算法:统计二叉树中叶结点的个数,用C++实现
时间: 2025-01-04 13:24:37 浏览: 7
以二叉链表表示二叉树的情况下,我们可以通过深度优先搜索(DFS)遍历的方式来计算叶节点的数量。叶节点是没有子节点的节点,所以在遍历时只需简单地计数即可。以下是C++实现的一个简单示例:
```cpp
#include <iostream>
// 定义二叉树结点结构
struct TreeNode {
char value;
TreeNode* left;
TreeNode* right;
};
// 计算叶节点函数
int countLeaves(TreeNode* root) {
if (root == nullptr) return 0; // 空节点直接返回0
// 如果当前节点是叶子节点,递归终止并加一
if (root->left == nullptr && root->right == nullptr)
return 1;
// 否则继续递归计算左子树和右子树的叶节点数,并相加
return countLeaves(root->left) + countLeaves(root->right);
}
// 示例用法
int main() {
// 创建一个二叉树实例
TreeNode* tree = new TreeNode('A');
tree->left = new TreeNode('B');
tree->right = new TreeNode('D');
tree->left->left = new TreeNode('C');
// 调用函数并打印结果
int leafCount = countLeaves(tree);
std::cout << "叶节点总数: " << leafCount << std::endl;
return 0;
}
```
在这个例子中,`countLeaves` 函数通过递归遍历整棵树,每次遇到非叶子节点就往下探索,直到遇到叶子节点为止。
阅读全文