用C++编写程序,获得二叉树的叶子数。
时间: 2023-06-14 10:06:21 浏览: 77
以下是一个简单的C++程序,用于计算二叉树的叶子数:
```c++
#include <iostream>
using namespace std;
// 二叉树节点的定义
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 计算二叉树的叶子数
int countLeaves(TreeNode* root) {
if (root == NULL) return 0;
if (root->left == NULL && root->right == NULL) return 1;
return countLeaves(root->left) + countLeaves(root->right);
}
int main() {
// 创建一个二叉树
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
root->right->left = new TreeNode(6);
root->right->right = new TreeNode(7);
// 计算二叉树的叶子数
int numLeaves = countLeaves(root);
cout << "Number of leaves in binary tree: " << numLeaves << endl;
return 0;
}
```
上述程序创建了一个简单的二叉树,并使用递归函数 `countLeaves` 计算二叉树的叶子数。函数的实现方式是:如果当前节点为空,返回0;如果当前节点是叶子节点,返回1;否则,递归计算左右子树的叶子数,并将结果相加返回。最后,程序输出计算结果。
阅读全文