标题:二叉树的遍历问题
取消只看楼主
peswe
Rank: 1
等 级:新手上路
帖 子:197
专家分:0
注 册:2006-11-22
 问题点数:0 回复次数:1 
二叉树的遍历问题

以下是二叉树的建立和先、中、后遍历的程序,其中先序遍历已经实现,但其他两种遍历都有问题,望高手千万指点下!~
#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-05-23 22:41
peswe
Rank: 1
等 级:新手上路
帖 子:197
专家分:0
注 册:2006-11-22
得分:0 
ok 了,没事了,是我看错了,程序没错!~

C斗士~~~fighting!!!!
2007-05-24 12:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-141997-1-1.html




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

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