二叉树的创建 以及先序,中序,后序输出

#include "stdafx.h"
#include "malloc.h"
typedef int Status;
typedef char TElemType;
#define OVERFLOW -2
#define OK 1
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status GreateBiTree(BiTree &T)
{
char ch;
scanf("%c",&ch);
getchar();
if(ch==' ')T=NULL;
else{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
return OVERFLOW;
T->data=ch;
GreateBiTree(T->lchild);
GreateBiTree(T->rchild);
}
return OK; 
}
void PreOrderTraverse(BiTree T){
if(T){
printf("%c ",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void InOrderTraverse(BiTree T){
if(T){
InOrderTraverse(T->lchild);
printf("%c ",T->data);
InOrderTraverse(T->rchild);
}
}
void PostOrderTraverse(BiTree T){
if(T){
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c ",T->data);
}
}
int depth(BiTree T){
int dep1,dep2;
if(T==NULL)
return 0;
else
{
dep1=depth(T->lchild);
dep2=depth(T->rchild);
if(dep1>dep2)
return dep1+1;
else
return dep2+1;
}
}
int CountLeaf(BiTree T){
int m,n;
if(T==NULL) return 0;
if((T->lchild==NULL)&&(T->rchild==NULL))
  return 1;
else{
        m=CountLeaf(T->lchild);  
        n=CountLeaf(T->rchild); 
        return (m+n);   
}
}
int _tmain(int argc, _TCHAR* argv[])
{
BiTree T;
GreateBiTree(T);
printf("OK\n");
PreOrderTraverse(T);
int d;
d=depth(T);
printf("%d",d);
printf("\n");
d=CountLeaf(T);
printf("%d",d);
printf("\n");
return 0;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值