#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
#define NULLKEY '?'
struct tnode{
int data;
tnode *ll,*rl;
};
tnode* create(tnode* root)
{
int c;
cin>>c;
//scanf("%c",&c);
if(c==0){
root=NULL;
return root;
}else{
root=(tnode*)malloc(sizeof(tnode));
root->data=c;
root->ll=create(root->ll);
root->rl=create(root->rl);
return root;
}
}
void midsearch(tnode* root){
if(root==NULL){
return;
}else{
midsearch(root->ll);
cout<<root->data<<' ';
midsearch(root->rl);
}
}
void levelsearch(tnode* root){
tnode* q[100];//用数组代替实现队列
tnode* p;
int head=0,tail=0;
if(root==NULL){
return;
}else{
q[tail++]=root;//root入队
while(tail!=head){
p=q[head++];//出队
cout<<' '<<p->data;
//下面是两个儿子入队
if(p->ll){
q[tail++]=p->ll;
}
if(p->rl){
q[tail++]=p->rl;
}
}
}
}
int main()
{
tnode* root;
root=create(root);
midsearch(root);
levelsearch(root);
return 0;
}
先序建树,中序遍历、层序遍历
最新推荐文章于 2021-11-18 20:03:09 发布