帮忙看看怎么 二叉树先序遍历 为什么运行后没有结果

wg00123 2008-11-05 09:54:13

#include "stdafx.h"
#include<malloc.h>
#include<stdio.h>
#include<stdlib.h>
#define NULL 0
#define SIS 100
#define SIE 10
typedef struct bitnode
{
char data;
struct bitnode *lchild,*rchild;
}bitnode,*bitree;
typedef struct
{
bitree *base;
bitree *top;
int stacksize;
}sqstack;


void Initstack(sqstack &s)
{
s.base=(bitree*)malloc(SIS*sizeof(bitree));
s.top=s.base;
s.stacksize=SIS;


}
int GetTop(sqstack s,bitree &e)
{
if( e=*(s.top-1)) return 0;
else return 1;

}
void Push(sqstack &s,bitree &e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=s.base+s.stacksize;
s.stacksize+=SIE;
}
*s.top++=e;

}
void Pop(sqstack &s,bitree &e)
{
e=*--s.top;

}
int StackEmpty(sqstack s)
{
if(s.top=s.base)
return 0;
else return 1;
}
/*void Visit(char e)
{
printf("%c",e);
}*/
void PreOrderTraverse(bitree bt)
{ sqstack s;bitree p;

if(bt)
Initstack(s); Push(s,bt);
while(!StackEmpty(s))
{
while(GetTop(s,p)&&p)
{
printf("%c",p->data);/*Visit(p->data);*/
Push(s,p);
}
Pop(s,p);
if(!StackEmpty(s))
{
Pop(s,p);
Push(s,p->rchild);
}
}
}


void CreateBiTree(bitree &bt)
{char ch;
ch=getchar();
if(ch==' ') bt=NULL;
else
{
bt=(bitnode*)malloc(sizeof(bitnode));
bt->data=ch;
CreateBiTree(bt->lchild);
CreateBiTree(bt->rchild);
}

}


void main()
{bitree bt;
CreateBiTree(bt);
PreOrderTraverse(bt);
}
...全文
47 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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