大牛帮小弟看看

lostinginto 2011-12-25 01:06:35
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef struct BTREE
{
char data;
struct BTREE *lchild,*rchild;
}BTREE;
BTREE* stack[100];
BTREE *creat()
{
BTREE *T;
char ch;
ch=getchar();
if(ch=='#')
T=NULL;
else
{
T=(BTREE *)malloc(sizeof(BTREE));
T->data=ch;
T->lchild=creat();
T->rchild=creat();
}
return T;
}
void inorder(BTREE *T)
{
int i=-1;
for(;;)
{
while(T!=NULL)
{
i++;
stack[i]=T;
T=T->lchild;
}
if(i!=-1)
{
T=stack[i];
i--;
printf("%c",T->data);
T=T->rchild;
}
else
return ;
}

}
void porder(BTREE *T)//先序怎么输不出来啊
{
int i=-1;
while(1)
{
while(!T)
{
printf("%c",T->data);
if(!T->rchild)
stack[++i]=T->rchild;
T=T->lchild;
}
if(i!=-1)
{
T=stack[i];
i--;
}
else
return;
}
}
int main()
{
BTREE *T;
T=creat();
inorder(T);
putchar('\n');
porder(T);
return 0;
}
//测试数据124#8##59###36##7##


...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lostinginto 2011-12-25
  • 打赏
  • 举报
回复
谢了。旁观者清啊
newfarmerchi 2011-12-25
  • 打赏
  • 举报
回复

while(1)
{
while(T)//<----------------here
{
printf("%c",T->data);
if(T->rchild)//<---------------here
stack[++i]=T->rchild;
T=T->lchild;
}
if(i!=-1)
{
T=stack[i];
i--;
}
else
return;
}




lostinginto 2011-12-25
  • 打赏
  • 举报
回复
先序遍历输不出来数据。输出的只有中序遍历的
猪头小哥 2011-12-25
  • 打赏
  • 举报
回复
不明白什么意思,你把要输出的结果贴出来看看,是要实现什么?
quwei197874 2011-12-25
  • 打赏
  • 举报
回复
什么问题?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧