二叉树的创建与遍历
typedef struct tree{
int data;
struct tree*lChild,*rChild;
}Tree;
创建
用前序创建二叉树
Tree*CreateTree(){
Tree*p;
int n;
printf("请输入数据:\n");
scanf("%d",&n);
if(n==-1){
return NULL;
}
else{
p=(Tree*)malloc(sizeof(Tree));
p->lChild=CreateTree();
p->rChild=CreateTree();
return p;
}
}
前序遍历二叉树
void SearchTree_Front(Tree*p){
if(p!=NULL){
printf("data=%d\n",p->data);
SearchTree_Front(p->lChild);//先打印左子树
SearchTree_Front(p->rChild);//再打印右子树
}
}
中序遍历
void SearchTree_Mid(Tree*p){
if(p!=NULL){
SearchTree_Mid(p->lChild);
printf("data=%d\n",p->data);
SearchTree_Mid(p->rChild);
}
}
后序遍历
void SearchTree_Last(Tree*p){
if(p!=NULL){
SearchTree_Last(p->lChild);
SearchTree_Last(p->rChild);
printf("data=%d\n",p->data);
}
}
主函数
int main(){
Tree*p;
p=CreateTree();
printf("前序遍历:\n");
SearchTree_Front(p);
printf("中序遍历:\n");
SearchTree_Mid(p);
printf("后序遍历:\n");
SearchTree_Last(p);
}
在输入的时候,应当先明确自己要显示怎样的树模型,再在合适的地方添加数据