用c++实现二叉树的创建,以及遍历二叉树、求二叉树叶子节点数、求二叉树深度的完整源代码
时间: 2024-12-25 08:26:12 浏览: 61
在C++中,我们可以创建一个简单的二叉树结构,并提供一些基本操作的函数,如创建节点、遍历(前序、中序、后序)、计算叶子节点数和深度。这里是一个基础的例子:
```cpp
#include <iostream>
using namespace std;
// 定义二叉树节点
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 创建一个新的二叉树节点
TreeNode* createNode(int val) {
return new TreeNode(val);
}
// 前序遍历(根-左-右)
void preOrderTraversal(TreeNode* root) {
if (root == nullptr) return;
cout << root->val << " ";
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
// 中序遍历(左-根-右)
void inOrderTraversal(TreeNode* root) {
if (root == nullptr) return;
inOrderTraversal(root->left);
cout << root->val << " ";
inOrderTraversal(root->right);
}
// 后序遍历(左-右-根)
void postOrderTraversal(TreeNode* root) {
if (root == nullptr) return;
postOrderTraversal(root->left);
postOrderTraversal(root->right);
cout << root->val << " ";
}
// 计算叶子节点数
int countLeaves(TreeNode* root) {
if (root == nullptr) return 0;
if (root->left == nullptr && root->right == nullptr) return 1; // 叶子节点
return countLeaves(root->left) + countLeaves(root->right);
}
// 计算二叉树的深度
int treeDepth(TreeNode* root) {
if (root == nullptr) return 0;
return max(treeDepth(root->left), treeDepth(root->right)) + 1;
}
int main() {
// 示例:创建一个简单二叉树
TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
cout << "Preorder traversal: ";
preOrderTraversal(root); cout << endl;
cout << "Inorder traversal: ";
inOrderTraversal(root); cout << endl;
cout << "Postorder traversal: ";
postOrderTraversal(root); cout << endl;
cout << "Number of leaves: " << countLeaves(root) << endl;
cout << "Tree depth: " << treeDepth(root) << endl;
return 0;
}
```
以上代码展示了如何创建二叉树并执行常见的操作。你可以根据需要修改或扩展这个基础框架。
阅读全文
相关推荐

















