写一个二叉树代码
时间: 2023-12-10 19:12:58 浏览: 74
以下是一个简单的二叉树的实现代码,包括二叉树节点结构体和插入节点、前序遍历、中序遍历和后序遍历的函数:
```c++
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int v) : val(v), left(nullptr), right(nullptr) {}
};
void insert(TreeNode* &root, int val) {
if (root == nullptr) {
root = new TreeNode(val);
} else if (val < root->val) {
insert(root->left, val);
} else {
insert(root->right, val);
}
}
void preorder(TreeNode* root) {
if (root == nullptr) {
return;
}
cout << root->val << " ";
preorder(root->left);
preorder(root->right);
}
void inorder(TreeNode* root) {
if (root == nullptr) {
return;
}
inorder(root->left);
cout << root->val << " ";
inorder(root->right);
}
void postorder(TreeNode* root) {
if (root == nullptr) {
return;
}
postorder(root->left);
postorder(root->right);
cout << root->val << " ";
}
int main() {
TreeNode* root = nullptr;
insert(root, 4);
insert(root, 2);
insert(root, 1);
insert(root, 3);
insert(root, 6);
insert(root, 5);
insert(root, 7);
cout << "Preorder traversal: ";
preorder(root);
cout << endl;
cout << "Inorder traversal: ";
inorder(root);
cout << endl;
cout << "Postorder traversal: ";
postorder(root);
cout << endl;
return 0;
}
```
这个代码实现了一个二叉树的基本功能,可以插入节点并遍历整棵树。其中,`insert`函数用于插入节点,`preorder`函数用于前序遍历,`inorder`函数用于中序遍历,`postorder`函数用于后序遍历。在主函数中,我们插入了一些节点并分别进行了三种遍历方式的输出。
阅读全文