标题:关于二叉树的层次遍历问题,求大神帮助
取消只看楼主
x6988312
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2012-3-26
结帖率:100%
已结贴  问题点数:20 回复次数:0 
关于二叉树的层次遍历问题,求大神帮助
#include<stdio.h>
#include<stdlib.h>
struct node{
char data;
struct node *lchild,*rchild;
};
struct stacks{
struct node stack[50];
int top;
int length;
};

struct stacks *creattree(){/*创建二叉树*/
int flag=1,i;
char c=NULL;
struct stacks *put;
struct node *p=NULL;
put=(struct stacks *)malloc(sizeof(struct stacks));
put->top=-1;
put->length=0;
printf("please input a generalizde list\n");
while(c!='\n'){
    scanf("%c",&c);
    if(c=='('){
       put->top++;
       put->stack[put->top]=*p;
       flag=1;
    }
    else if(c==')')
    put->top--;
    else if(c==',')
    flag=2;
    else if(c=='\n')
    break;
    else{
    p=(struct node *)malloc(sizeof(struct node));
    p->lchild=NULL;
    p->rchild=NULL;
    p->data=c;
    put->length++;
    if(put->length!=0){
       if(flag==1)
         (put->stack[put->top]).lchild=p;
      else if(flag==2)
         (put->stack[put->top]).rchild=p;
    }


  }
}
return put;
}
void overtree(struct node *root,int length){/*按层次遍历二叉树*/
struct node list[50];
int top=0,i=0;
list[top]=*root;
printf("the list is:\n");
printf("%c ",root->data);
while(i<length){
      if(list[i].lchild!=NULL){
      top++;
      list[top]=*(list[i].lchild);
      printf("%c ",list[top].data);
      }
      if(list[i].rchild!=NULL){
      top++;
      list[top]=*(list[i].rchild);
      printf("%c ",list[top].data);
      }
      i++;
      }
}
void main(){
struct node *root=NULL;
struct stacks *head;
clrscr();
head=creattree();
*root=head->stack[0];
overtree(root,head->length);
printf("\nthe numbers of list is:%d ",head->length);
free(head);
getch();
}
这个程序是输入一个二叉树的广义表,然后建立二叉树。再按层次遍历。
然而,我却出错了,比如说输入a(b,c(d,e))最后得到的结果应该是a b c d e但是得不到。
经过我的检查,发现:在创建树的函数中,c的左右孩子为d,e;但回到了主程序里c的左右孩子竟然都成了a。这让我百思不得其解。
因此求大神帮忙
搜索更多相关主题的帖子: 二叉树 please include 
2013-05-29 13:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-412500-1-1.html




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

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