C++用二叉链表存储二叉树并用递归求叶子数的主函数的源代码
时间: 2024-02-12 07:05:58 浏览: 100
好的,以下是用二叉链表存储二叉树并用递归求叶子数的主函数的 C++ 源代码:
```c++
#include<iostream>
using namespace std;
// 二叉树结点的定义
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 二叉树类的定义
class BinaryTree {
public:
BinaryTree() {
root = NULL;
}
~BinaryTree() {
destroy(root);
}
// 创建二叉树
void createTree() {
createTree(root);
}
// 递归求叶子数
int countLeaf() {
return countLeaf(root);
}
private:
TreeNode* root;
// 销毁二叉树
void destroy(TreeNode* node) {
if (node != NULL) {
destroy(node->left);
destroy(node->right);
delete node;
}
}
// 创建二叉树
void createTree(TreeNode*& node) {
int val;
cin >> val;
if (val == -1) {
node = NULL;
} else {
node = new TreeNode(val);
createTree(node->left);
createTree(node->right);
}
}
// 递归求叶子数
int countLeaf(TreeNode* node) {
if (node == NULL) {
return 0;
} else if (node->left == NULL && node->right == NULL) {
return 1;
} else {
return countLeaf(node->left) + countLeaf(node->right);
}
}
};
int main() {
BinaryTree bt;
bt.createTree();
cout << "叶子数:" << bt.countLeaf() << endl;
return 0;
}
```
以上代码实现了一个二叉树类 `BinaryTree`,其中包含创建二叉树和递归求叶子数的方法。在 `main()` 函数中,我们先创建了一个二叉树对象 `bt`,然后调用其 `createTree()` 方法创建二叉树,最后调用其 `countLeaf()` 方法求叶子数并输出结果。
阅读全文