使用二叉链表作为二叉树的储存结构,设计一个算法来统计二叉树的叶结点个数,并给出完整的C++程序实现
时间: 2024-12-10 10:38:14 浏览: 17
使用二叉链表存储二叉树时,每个节点通常包含两个指针,一个指向左孩子,另一个指向右孩子。统计二叉树的叶节点(即没有孩子的节点)个数可以采用递归的方式遍历树。以下是C++的简单实现:
```cpp
#include <iostream>
// 定义二叉树节点
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 递归函数用于计算叶节点的数量
int countLeaves(TreeNode* root) {
if (root == nullptr) { // 如果节点为空,返回0
return 0;
} else if (root->left == nullptr && root->right == nullptr) { // 如果节点既是左子树又是右子树的终端,它就是一个叶子节点,计数加一
return 1;
} else { // 否则,分别对左子树和右子树进行递归,叶子节点会累加到总和中
return countLeaves(root->left) + countLeaves(root->right);
}
}
int main() {
// 创建一个简单的二叉树示例
TreeNode* tree = new TreeNode(1);
tree->left = new TreeNode(2);
tree->right = new TreeNode(3);
tree->left->left = new TreeNode(4);
tree->left->right = new TreeNode(5);
int leafCount = countLeaves(tree); // 调用函数计算叶节点数量
std::cout << "The number of leaves in the binary tree is: " << leafCount << std::endl;
return 0;
}
```
阅读全文