| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 314 人关注过本帖
标题:二叉树的基本操作
只看楼主 加入收藏
匆匆,过客
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:3
专家分:1
注 册:2011-5-17
收藏
 问题点数:0 回复次数:0 
二叉树的基本操作
#include "stdio.h"
#include"stdlib.h"
#include "string.h"
#define NULL 0
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree Create(BiTree T){
char ch;
//printf("输入节点数据\n");

ch=getchar();
if(ch=='#')
T=NULL;
else{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
printf("Error!");
T->data=ch;
T->lchild=Create(T->lchild);
T->rchild=Create(T->rchild);
}
return T;
}
void Preorder(BiTree T){
if(T){
printf("%c",T->data);
Preorder(T->lchild);
Preorder(T->rchild);
}
}
int Sumleaf(BiTree T){
int sum=0,m,n;
if(T){
if((!T->lchild)&&(!T->rchild))
sum++;
m=Sumleaf(T->lchild);
sum+=m;
n=Sumleaf(T->rchild);
sum+=n;
}
return sum;
}
void zhongxu(BiTree T){
if(T){
zhongxu(T->lchild);
printf("%c",T->data);
zhongxu(T->rchild);
}
}
void houxu(BiTree T){
if(T){
houxu(T->lchild);
houxu(T->rchild);
printf("%c",T->data);
}
}
int Depth(BiTree T){
int dep=0,depl,depr;
if(!T) dep=0;
else{
depl=Depth(T->lchild);
depr=Depth(T->rchild);
dep=1+(depl>depr?depl:depr);
}
return dep;
}
main(){
BiTree T;
int sum,dep;
printf("创建二叉树");
T=Create(T);
printf("前序遍历");
Preorder(T);
printf("\n");  
printf("中序遍历");
zhongxu(T);
printf("\n");
printf("后序遍历");
houxu(T);
printf("\n");
printf("计算节点数目");
sum=Sumleaf(T);
printf("%d",sum);  
printf("计算树的深度");
dep=Depth(T);
printf("\n%d",dep);
}
搜索更多相关主题的帖子: return 二叉树 
2011-05-18 23:44
快速回复:二叉树的基本操作
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011313 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved