wei xin_44706101 2019-11-25 23:16 采纳率: 100%
浏览 323
已采纳

二叉树问题非递归中序遍历

typedef struct bnode
{char data;
struct bnode *lchild;
struct bnode *rchild;
int top;
}bnode;
 bnode stack[100];
void initstack(bnode * stack)
{
    stack->top=-1;}
void push(bnode*stack,bnode*p)
{ if(p)
 {stack->top++;
 stack[stack->top].data=p->data;
}}
void pop(bnode*stack)
{
    stack->top--;}
int stackempty(bnode*stack)
{ if (stack->top==-1)
    return 0;
return 1;
}
bnode * top(bnode*stack)
{ bnode* t=&stack[stack->top];

return t;}
void stackmidread(bnode*root)
{ bnode*p=root;

initstack(stack);
while(p || stackempty(stack)==1)
{    while(p)
{push(stack,p);
 p=p->lchild;
}
if (stackempty(stack)==1)
{ p=top(stack);
  printf("%c", p->data);
  pop(stack);
  p=p->rchild;
}}

跪求大佬解答 为什么中序遍历ABD###CE##FG###
只显示DBA
bnode * createtree()
{ char ch;
bnode*p;

  ch=getchar();
  if (ch=='#')
      p=NULL;
  else{ p=(bnode*)malloc(sizeof(bnode));
  p->data=ch;
  p->lchild=createtree();
  p->rchild=createtree();}
  return p;
}
```void main ()
{ bnode *root=createtree();

stackmidread(root);
}
  • 写回答

2条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥50 有没有大佬看一下关于思科的这道题怎么做
      • ¥30 求十字路口交通灯S7-200plc,今天早上八点前。
      • ¥20 如何用智能手表oppowatch3实现个人热点功能
      • ¥15 运营商打开wanpush会有怎么样的危害
      • ¥15 Java编程题,定义一个时钟
      • ¥15 Python面向对象编程——生成多项式的一阶导数
      • ¥15 在编写C++程序遇到了问题
      • ¥15 java程序查找字符串中所有的回文并输出
      • ¥15 怎么让只支持对.exe 和.dll文件进行加壳的加壳器,同时让它也支持php文件加壳呢
      • ¥15 这两个数学公式什么意思?