m0_61059872 2022-05-07 22:45 采纳率: 66.7%
浏览 68
已结题

有关二叉树非递归遍历,代码编译没有错误但运行没有结果,请帮看一下

谢谢
想要输入:1 2 4 0 5 0 3 6 0
结果:1 2 4 5 3 6

#include"stdio.h"
#include"malloc.h"
#define MAX_NODE 100
#define EXPANSIONFLAG 0
typedef struct node
{
int data;
struct node *Lchild;
struct node *Rchild;
}BiTree;
BiTree *creat_preorder();
void  PreorderTraverse( BiTree  *T);
void  InorderTraverse( BiTree *t );
int main()
{
    BiTree *T;
    BiTree *creat_preorder(T);
    PreorderTraverse(T);
    return 0;
}
BiTree *creat_preorder()
{
BiTree *T, *s, *p, *stack[MAX_NODE];
int x;
int top = 0;
int flag = 0; 
scanf( "%d",&x );
if( x == EXPANSIONFLAG )
{
T = NULL;
return T;
}
T = ( struct node * )malloc( sizeof(BiTree) );
T->data   = x;
T->Lchild = NULL;
T->Rchild = NULL;
p = T;
while( 1 )
{
scanf( "%d",&x );
if( x != EXPANSIONFLAG ) 
{
s = ( struct node * )malloc( sizeof(BiTree) );
s->data   = x;
s->Lchild = NULL;
s->Rchild = NULL;
if( flag == 1 ) 
{
p->Rchild = s;
flag = 0;
}
else 
{
p->Lchild = s;
stack[ top++ ] = p;
}
p = s;
}
else 
{
scanf( "%d",&x );
if( x != EXPANSIONFLAG ) 
{
s = ( struct node * )malloc( sizeof(BiTree) );
s->data   = x;
s->Lchild = NULL;
s->Rchild = NULL;
p->Rchild = s;
p = s;
    }
    else 
    {
     if( top > 0 )
     {
     p = stack[ --top ];
     flag = 1;
}
else 
break;
}
}
}
return( T );
}
void  PreorderTraverse( BiTree  *T)
{
    BiTree  *Stack[MAX_NODE] , *p,  *q;
int top=0 ;
p = T;
if( T==NULL )
    {
printf( "Binary Tree is Empty!\n");
return;
}
while (p!=NULL)  
{
printf( "%d,", p->data );
q = p->Rchild; 
if( q != NULL )  
Stack[++top] = q;
p = p->Lchild; 
if( p == NULL && top > 0 ) 
p = Stack[top--];  
}
}

  • 写回答

1条回答 默认 最新

  • fuill 2022-05-08 06:46
    关注

    main里BiTree *creat_preorder(T);这样写变成函数声明了,没有执行该函数

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月8日
  • 已采纳回答 5月8日
  • 赞助了问题酬金5元 5月7日
  • 创建了问题 5月7日

悬赏问题

  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求