#include<stdio.h>
#include<stdlib.h>
//FCA##DB###EH##GM###
typedef struct BiTNode{
char data;
struct BiTNode *lchild;
struct BiTNode *rchild;
}BiNode,* BiTree;
BiTree CreateBiTree(){
BiTree T;
char c;
scanf("%c",&c);
if(c=='#'){
T=NULL;
}
else {
T=(BiTree)malloc(sizeof(BiTNode));
T->data=c;
T->lchild=CreateBiTree();
T->rchild=CreateBiTree();
}
return T;
}
void visit(char data){
printf("%c\n",data);
}
PreOrderTraverse(BiTree T){
if(T){
visit(T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);}
}
InOrderTraverse(BiTree T){
if(T){
InOrderTraverse(T->lchild);
visit(T->data);
InOrderTraverse(T->rchild);}
}
PostOrderTraverse(BiTree T){
if(T){
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
visit(T->data);}
}
int Depth(BiTree T)
{
int m,n;
if(T==NULL) return 0;
else{
m=Depth(T->lchild);
n=Depth(T->rchild);
if(m>n) return(m+1);
else return(n+1);
}
}
int main()
{
BiTree s;
s=CreateBiTree();
printf("先序遍历二叉树:\n");
PreOrderTraverse(s);
printf("中序遍历二叉树:\n");
InOrderTraverse(s);
printf("后序遍历二叉树:\n");
PostOrderTraverse(s);
Depth(s);
printf("深度为:%d",Depth(s));
return 0;
}
数据结构二叉树递归遍历
最新推荐文章于 2024-10-01 23:10:03 发布