使用C++语言 用类的方式 计算出叶子节点的个数
时间: 2024-01-25 21:01:49 浏览: 30
好的,我可以用C++语言编写一个类来计算二叉树的叶子节点个数。以下是一个简单的实现:
```c++
#include <iostream>
using namespace std;
class TreeNode {
public:
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
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);
Solution s;
int leaves = s.countLeaves(root);
cout << "Leaves: " << leaves << endl;
delete root->left->left;
delete root->left->right;
delete root->right->left;
delete root->left;
delete root->right;
delete root;
return 0;
}
```
这个类包含一个成员函数 `countLeaves`,它采用递归的方式遍历整个二叉树并计算出叶子节点的个数。对于每个节点,如果它是叶子节点(即左右子节点均为空),则返回 1;否则,递归计算其左右子树的叶子节点个数,并将两个结果相加。
在 `main` 函数中,我们创建了一个二叉树,并调用 `countLeaves` 函数来计算叶子节点的个数。最后,我们释放了动态分配的内存以避免内存泄漏。