用c++实现二叉树的建立与遍历
时间: 2023-11-05 15:12:55 浏览: 96
由c++实现的二叉树的建立与遍历
4星 · 用户满意度95%
好的,我来为您解答。二叉树是一种非常常见的数据结构,它由一个根节点以及每个节点最多有两个子节点组成。下面是用C++实现二叉树的建立与遍历的示例代码:
```c++
#include<iostream>
using namespace std;
// 定义二叉树结点
struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x):val(x),left(NULL),right(NULL){}
};
// 创建二叉树
void createTree(TreeNode* &root){
int val;
cin>>val;
if(val == -1){ // 输入-1表示该节点为空
root = NULL;
return;
}
root = new TreeNode(val); // 创建新节点
createTree(root->left); // 递归创建左子树
createTree(root->right); // 递归创建右子树
}
// 前序遍历
void preOrder(TreeNode* root){
if(root == NULL){
return;
}
cout<<root->val<<" "; // 先输出根节点
preOrder(root->left); // 再遍历左子树
preOrder(root->right); // 最后遍历右子树
}
// 中序遍历
void inOrder(TreeNode* root){
if(root == NULL){
return;
}
inOrder(root->left); // 先遍历左子树
cout<<root->val<<" "; // 再输出根节点
inOrder(root->right); // 最后遍历右子树
}
// 后序遍历
void postOrder(TreeNode* root){
if(root == NULL){
return;
}
postOrder(root->left); // 先遍历左子树
postOrder(root->right); // 再遍历右子树
cout<<root->val<<" "; // 最后输出根节点
}
int main(){
TreeNode* root;
createTree(root); // 创建二叉树
cout<<"前序遍历结果:";
preOrder(root); // 前序遍历
cout<<endl<<"中序遍历结果:";
inOrder(root); // 中序遍历
cout<<endl<<"后序遍历结果:";
postOrder(root); // 后序遍历
cout<<endl;
return 0;
}
```
以上代码中,我们利用递归实现了二叉树的创建、前序遍历、中序遍历和后序遍历。其中,createTree函数用于创建二叉树,-1代表该节点为空;preOrder、inOrder和postOrder分别用于前序遍历、中序遍历和后序遍历,输出节点的值即可。
阅读全文