| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1053 人关注过本帖
标题:二叉树的非递归遍历请高手检查错误
取消只看楼主 加入收藏
qq8801103
Rank: 5Rank: 5
来 自:苏州中科大软件学院
等 级:职业侠客
威 望:1
帖 子:422
专家分:340
注 册:2009-10-8
结帖率:73.96%
收藏
已结贴  问题点数:10 回复次数:2 
二叉树的非递归遍历请高手检查错误
#include <stdio.h>
#define STACKINITSIZE 100
#define STACK 10
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef struct
{
   char *base;
   char *top;
   int stacksize;
}Sqstack;
typedef struct BiTNode
{
  char data;
  struct BiTNode  *lchild,*rchild;
}BiTNode,*BiTree;
char Initstack(Sqstack *S)
{
   S->base=(char *)malloc(STACKINITSIZE*sizeof(char));
   if(!S->base) exit(OVERFLOW);
   S->top=S->base;
   S->stacksize=STACKINITSIZE;
   return OK;
}
char GetTop(Sqstack S,char *e)
{
   if(S.top==S.base)  return ERROR;
   *e=*S.top-1;
   return *e;
}
char Push(Sqstack *S,char *e)
{
  if(S->top-S->base>=S->stacksize)
  {
    S->base=(char *)realloc(S->base,(S->stacksize+STACK)*sizeof(char));
    if(!S->base) exit(OVERFLOW);
    S->top=S->base+S->stacksize;
    S->stacksize+=STACK;
  }
  *S->top++=*e;
  return *e;
}
char Pop(Sqstack *S,char *e)
{
   if(S->top==S->base) return ERROR;
   *e=*--S->top;
   return *e;
}
print(char e)
{
   printf("%c",e);
   return 1;
}
char Inorder(BiTree T,int(* Visit)(char e))
{
  Sqstack S;BiTree p;
  Initstack(&S);   Push(&S,T);
  while(!stackempty(&S))
  {
     while(GetTop(S,p)&&p) Push(&S,p->lchild);
     Pop(&S,p);
     if(!stackempty(&S))
     {
    Pop(&S,p);
    if(!Visit(p->data)) return ERROR;
    Push(&S,p->rchild);
     }
  }
}
stackempty(Sqstack *S)
{
  if(S->top==S->base) return 1;
  else
    return 0;
}
char CreateBiTree(BiTree T)
{
  char ch;
  ch=getchar();
  if(ch=='#') T=NULL;
  else
  {
    if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit(OVERFLOW);
    T->data=ch;
    CreateBiTree(T->lchild);
    CreateBiTree(T->rchild);
  }
  return OK;
}
main()
{
BiTree S1;
CreateBiTree(&S1);
Inorder(&S1,print);
}
搜索更多相关主题的帖子: 二叉树 遍历 递归 检查 
2010-05-12 11:53
qq8801103
Rank: 5Rank: 5
来 自:苏州中科大软件学院
等 级:职业侠客
威 望:1
帖 子:422
专家分:340
注 册:2009-10-8
收藏
得分:0 
那就请你给我写一个  谢谢

Discuz!  
好好学习  天天向上
2010-05-13 22:17
qq8801103
Rank: 5Rank: 5
来 自:苏州中科大软件学院
等 级:职业侠客
威 望:1
帖 子:422
专家分:340
注 册:2009-10-8
收藏
得分:0 
7楼的我怎么编译不通过呢  能否用c  写个  写谢谢

Discuz!  
好好学习  天天向上
2010-05-14 19:24
快速回复:二叉树的非递归遍历请高手检查错误
数据加载中...
 
   



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

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