#include<bits/stdc++.h>
using namespace std;
typedef char eletype;
typedef struct node{
struct node *left;
struct node *right;
eletype value;
}treenode,*tree;
//1.先序遍历
void preOrder(tree root){
if(root!=NULL){
cout<<root->value<<" ";
preOrder(root->left);
preOrder(root->right);
}
}
//2.中序遍历
void inOrder(tree root){
if(root!=NULL){
inOrder(root->left);
cout<<root->value<<" ";
inOrder(root->right);
}
}
//2.后序遍历
void lasOrder(tree root){
if(root!=NULL){
lasOrder(root->left);
lasOrder(root->right);
cout<<root->value<<" ";
}
}
//4. //建树
void crtTreenode(tree *root){
char ch=getchar();
getchar();
if(ch=='/'){
*root=NULL;
}
else{
(*root)=new treenode;
(*root)->value=ch;
crtTreenode(&(*root)->left);
crtTreenode(&(*root)->right);
}
}
int main(){
tree p;
crtTreenode(&p);
cout<<"先序输出:"<<endl;
preOrder(p);
cout<<endl;
cout<<"中序输出:"<<endl;
inOrder(p);
cout<<endl;
cout<<"后序输出:"<<endl;
lasOrder(p);
// 输入ab//cd///
}
注:建立树过程使用的二重指针,否则会报错,类似swap值传递,具体参考这篇文章
运行结果:
欢迎参考学习,批评指正