c++以二叉链表为存储结构,实现二叉树的创建、遍历(实验类型:验证型)
时间: 2024-02-09 19:11:07 浏览: 87
数据结构各种算法实现(C++模板)
好的,我会根据您提供的实验类型,给出一个验证型的二叉树创建和遍历的C++代码示例,具体实现如下:
```c++
#include<iostream>
using namespace std;
//定义二叉树结点结构体
struct TreeNode{
char data; //存储二叉树结点的数据
TreeNode* left; //存储二叉树结点的左子树
TreeNode* right; //存储二叉树结点的右子树
};
//创建二叉树
void createBinaryTree(TreeNode* &root){
char ch;
cin>>ch;
if(ch == '#'){
root = NULL;
}
else{
root = new TreeNode;
root->data = ch;
createBinaryTree(root->left);
createBinaryTree(root->right);
}
}
//前序遍历二叉树
void preOrder(TreeNode* root){
if(root == NULL){
return;
}
cout<<root->data<<" "; //访问结点
preOrder(root->left); //前序遍历左子树
preOrder(root->right); //前序遍历右子树
}
//中序遍历二叉树
void inOrder(TreeNode* root){
if(root == NULL){
return;
}
inOrder(root->left); //中序遍历左子树
cout<<root->data<<" "; //访问结点
inOrder(root->right); //中序遍历右子树
}
//后序遍历二叉树
void postOrder(TreeNode* root){
if(root == NULL){
return;
}
postOrder(root->left); //后序遍历左子树
postOrder(root->right); //后序遍历右子树
cout<<root->data<<" "; //访问结点
}
int main(){
TreeNode* root; //定义二叉树的根节点
cout<<"请输入二叉树的结点,以'#'代表空结点:"<<endl;
createBinaryTree(root); //创建二叉树
cout<<"前序遍历结果:"<<endl;
preOrder(root); //前序遍历二叉树
cout<<endl<<"中序遍历结果:"<<endl;
inOrder(root); //中序遍历二叉树
cout<<endl<<"后序遍历结果:"<<endl;
postOrder(root); //后序遍历二叉树
return 0;
}
```
在这份代码中,我们通过二叉链表作为存储结构来创建了一个二叉树,并实现了三种遍历方式:前序遍历、中序遍历和后序遍历,并且程序会根据用户输入的二叉树结点,输出对应的遍历结果。
阅读全文