| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1058 人关注过本帖
标题:建立一个二叉树并完成树的遍历程序
只看楼主 加入收藏
nowander
Rank: 1
等 级:新手上路
帖 子:7
专家分:1
注 册:2011-11-11
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:2 
建立一个二叉树并完成树的遍历程序
#include "stdio.h"
typedef char ElemType;
#define MAXNUM 150

/* 二叉树结点定义 */
typedef struct BTNode
{
    ElemType data;         /* data field */
    struct BTNode *lchild;
    struct BTNode *rchild;   
} BTNode;

/* 辅助的二叉树索引数组 */
BTNode *p[MAXNUM+1];

/* 根据用户输入创建二叉树 */
/* 二叉树结点信息:数据域,以及在完全二叉树中的索引值 */
BTNode *Create_BiTree(void)
{
        BTNode* t = NULL;
        int i;
        int j;
        char ch;
   
        printf("\n enter i, ch :");
        scanf("%d,%c", &i, &ch);
        
        while (i != 0 && ch != '#' )
        {
            BTNode* s = (BTNode*)malloc(sizeof(BTNode));
            s->data = ch;
            s->lchild = s->rchild = NULL;
            
            p[i] = s;
            
            if ( i == 1 )
                t = s;
            else
            {
                j = i/2;
               
                if ( i%2 == 0 )
                    p[j]->lchild = s;
                else
                    p[j]->rchild = s;
            }
            printf("\n enter i, ch :");
            scanf("%d,%c", &i, &ch);
        }
        
        return t;
}

int main(void)
{
    BTNode* t;
    t = Create_BiTree();
/*   
    preorder(t);
    printf(" preorder\n");
    preorder_recursive(t);
    printf(" preorder_recursive\n");

    Inorder(t);
    printf(" Inorder\n");
    Inorder_recursive1(t);
    printf(" Inorder_recursive1\n");
    Inorder_recursive2(t);
    printf(" Inorder_recursive2\n");


    Postorder(t);
    printf(" Postorder\n");
    Postorder_recursive(t);
    printf(" Postorder_recursive\n");

    LevelOrder(t);
    printf(" LevelOrder\n");
*/   
    getchar();
    getchar();

    return 0;

}


 void preorder(BTNode *bt)
{
     if (bt)
   {
           printf("%c ",bt->data);
      preorder(bt->lchild);
      preorder(bt->rchild);
    }
}
void Inorder(BTNode *bt)
{
  if (bt)
  {
      Inorder(bt->lchild);
    printf("%c ",bt->data); /* 访问根结点 */
    Inorder(bt->rchild);
  }
} /* inorder */
 void Postorder(BTNode *bt)
{
     if (bt)
     {
         Postorder(bt->lchild);
      Postorder(bt->rchild);
      printf("%c ",bt->data);
  }
}
--------------------------------------------------------------------------
在WIN-TC上执行总是看不到结果,加getch()或while(1)则提示有不可到达程序这是怎么回事??????



搜索更多相关主题的帖子: 信息 include 二叉树 field 
2011-11-19 01:26
qq605412254
Rank: 2
等 级:论坛游民
帖 子:15
专家分:63
注 册:2011-11-18
收藏
得分:4 
void preorder(BTNode *bt)
没有声明吧
2011-11-19 09:19
取出80
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2011-12-15
收藏
得分:0 
要嘛你把子函数写在前面,要嘛你在前面先声明函数
2011-12-15 20:04
快速回复:建立一个二叉树并完成树的遍历程序
数据加载中...
 
   



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

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