标题:我自己写的二叉树递归遍历在输出时有错误!请大家看看!
只看楼主
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
 问题点数:0 回复次数:3 
我自己写的二叉树递归遍历在输出时有错误!请大家看看!
读入一个字符串,作为节点!


#define   MAX   30
#include <stdio.h>
#include <malloc.h>
typedef   struct   btnode
{                     
            char   data;
            struct   btnode   *lchild,*rchild;
}bttree;

  bttree   *cre_tree(char   *str,int   i,int   m)
  {
    bttree   *p;
          if(i> =m)
                return   NULL;
    p=(bttree   *)malloc(sizeof(bttree));
    p-> data=str[i];
    p-> lchild=cre_tree(str,i+1,m);
    p-> rchild=cre_tree(str,i+2,m);
    return   p;
  }
  void   preorder(bttree   *t)
  {   
    if(t!=NULL)
{
      printf("%c",t-> data);
      if(t-> lchild)
      {
            printf("-> ");
            preorder(t-> lchild);
      }
      if(t-> rchild)
      {
              printf("-> ");
              preorder(t-> rchild);
      }
  }
}
void   inorder(bttree   *t)
{   
    if(t!=NULL)
      {
            inorder(t-> lchild);
            printf("%c",t-> data);
            printf("-> ");
            inorder(t-> rchild);
      }
}
void   postorder(bttree   *t)
{
          if(t!=NULL)
          {
                    postorder(t-> lchild);
    inorder(t-> rchild);
                    printf("%c",t-> data);
                    printf("-> ");
                    
          }
}
void   main()
{
          int   i,n;
          char   str[MAX];
          bttree   *root;


          printf("please   input   a   bbtree   node   num:\n");
          scanf("%d",&n);
          getchar();
          printf("please   input   a   string   which   length   is   %d:",n);
          for(i=0;i <n;i++)
                    str[i]=getchar();
          printf("\n\n");
          root=cre_tree(str,0,n);
          printf("the   tree   is   already   created\n");
          printf("\n");
          printf("the   result   after   preorder   processing:");
          preorder(root);
          printf("\n");
          printf("the   result   after   inorder   processing:");
          inorder(root);
          printf("\n");
          printf("the   result   after   postorder   processing:");
          inorder(root);
          printf("\n\n");
}

btree.jpg (21.76 KB)
搜索更多相关主题的帖子: 二叉树 遍历 递归 输出 时有 
2007-12-17 16:53
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
得分:0 
希望输出是满足递归遍厉!

方寸之内,剖天下; 方坛之内,析自我;
2007-12-17 16:55
zxc1998
Rank: 1
等 级:新手上路
威 望:1
帖 子:133
专家分:0
注 册:2007-3-21
得分:0 
你的程序错误不在遍历操作,而是在二叉树的建立过程是错误的,建立的序列采用二叉树的扩充先序序列建立。

再试试吧。
2007-12-17 21:20
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
得分:0 
具体点!

方寸之内,剖天下; 方坛之内,析自我;
2007-12-17 23:42



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




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

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