#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*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);
}
//求树的深度
int deep(BiTree T){
int m=1,n=1;
if(T==NULL)return 0;
else {
m=deep(T->lchild);
n=deep(T->rchild);
if(m>n)return (m+1);
else return (n+1);
}
}
//先序
void PreOrderTraverse(BiTree T){
if(T){
visit (T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
//中序
void InOrderTraverse(BiTree T){
if(T){
InOrderTraverse(T->lchild);
visit(T->data);
InOrderTraverse(T->rchild);
}
}
//后序
void PostOrderTraverse(BiTree T){
if(T){
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
visit(T->data);
}
}
int main(){
BiTree T;int i;
T=CreateBiTree();
printf("先序遍历二叉树");
PreOrderTraverse(T);
i=deep(T);
printf("树的深度为%d\n",i);
return 0;
}
遍历二叉树的实现
最新推荐文章于 2024-07-14 01:31:01 发布