| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
学习型 ASP/PHP/ASP.NET 主机 35元/年全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
赛孚耐:软件保护加密专家身份认证令牌USB KEY  
共有 405 人关注过本帖
标题:二叉树的遍历问题
收藏  订阅  推荐  打印 
peswe
Rank: 3Rank: 3
等级:中级会员
帖子:197
积分:2130
注册:2006-11-22
二叉树的遍历问题

以下是二叉树的建立和先、中、后遍历的程序,其中先序遍历已经实现,但其他两种遍历都有问题,望高手千万指点下!~
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTree;

BiTree *CreateBiTree()
{
BiTree *T;
char ch;
scanf("%c",&ch);
//fflush(stdin);
/*if(ch=='n')
{
return T;
}*/
if(ch==' ')
{
T=NULL;
}
else
{
if(!(T=(BiTree*)malloc(sizeof(BiTree))))
{
printf("\nError!~");
return T;
}
T->data=ch;
//printf("\nCreate lchild tree:\n");
T->lchild=CreateBiTree();
//printf("\nCreate rchild tree:\n");
T->rchild=CreateBiTree();
}
return T;
}

void PreOrderTraverse(BiTree *T) //先序遍历,
{
if(T!=NULL)
{
printf("%c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
printf("\n");
}

void MidOrderTraverse(BiTree *T)
{
if(T!=NULL)
{
//printf("%c",T->data);
MidOrderTraverse(T->lchild);
printf("%c",T->data);
MidOrderTraverse(T->rchild);
}
}

void BeOrderTraverse(BiTree *T)
{
if(T!=NULL)
{
BeOrderTraverse(T->lchild);
BeOrderTraverse(T->rchild);
printf("%c",T->data);
}
printf("\n");
}

int main()
{
BiTree *T;
T=(BiTree*)malloc(sizeof(BiTree));
T=CreateBiTree();
PreOrderTraverse(T);
printf("\n");
MidOrderTraverse(T);
printf("\n");
BeOrderTraverse(T);
printf("\n");
return 0;
}

搜索更多相关主题的帖子: 遍历  二叉树  BiTree  BiTNode  struct  
2007-5-23 22:41
peswe
Rank: 3Rank: 3
等级:中级会员
帖子:197
积分:2130
注册:2006-11-22

ok 了,没事了,是我看错了,程序没错!~

C斗士~~~fighting!!!!
2007-5-24 12:40
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.073368 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved