二叉树的先序创建与(先序,中序,后序)遍历 示例:(A)1,(B)2,0,©3,0,0,(D)4,0,0
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10010
#define ElemType int
typedef struct BTNode
{
ElemType data
;
BTNode
*lchild
,*rchild
;
}*BTree
;
BTree
CreateTree(){
ElemType ch
;
printf("输入结点元素值:");
scanf("%d",&ch
);
if(ch
== 0)
return NULL;
else{
BTree tree
=(BTree
)malloc(sizeof(BTree
));
tree
->data
=ch
;
printf("%d 结点左子树\n",ch
);
tree
->lchild
=CreateTree();
printf("%d 结点右子树\n",ch
);
tree
->rchild
=CreateTree();
return tree
;
}
}
void PreOrderTravel(BTree tree
){
if(tree
== NULL)
return;
printf("%d ",tree
->data
);
PreOrderTravel(tree
->lchild
);
PreOrderTravel(tree
->rchild
);
}
void MedOrderTravel(BTree tree
){
if(tree
== NULL)
return;
MedOrderTravel(tree
->lchild
);
printf("%d ",tree
->data
);
MedOrderTravel(tree
->rchild
);
}
void AftOrderTravel(BTree tree
){
if(tree
== NULL)
return;
AftOrderTravel(tree
->lchild
);
AftOrderTravel(tree
->rchild
);
printf("%d ",tree
->data
);
}
int main(){
printf("二叉树的建立\n");
BTree tree
;
tree
=CreateTree();
printf("二叉树的先序遍历\n");
PreOrderTravel(tree
);
printf("\n二叉树的中序遍历\n");
MedOrderTravel(tree
);
printf("\n二叉树的后序遍历\n");
AftOrderTravel(tree
);
return 0;
}
转载请注明原文地址:https://blackberry.8miu.com/read-32003.html