| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1411 人关注过本帖
标题:看看先序创建,遍历二叉树哪错了,谢谢!?
只看楼主 加入收藏
zhufeifei
Rank: 1
等 级:新手上路
威 望:2
帖 子:402
专家分:0
注 册:2006-8-11
收藏
 问题点数:0 回复次数:4 
看看先序创建,遍历二叉树哪错了,谢谢!?
#include<stdio.h>
typedef char TElemType;
typedef struct BiTNode
{
        TElemType data;
        struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;

/*递归创建一个二叉树*/
void createBiTree(BiTree t)
{
        char c;
        c = getchar();
        if(c == 's')
        {
                t = NULL;
        }
        else
        {
                t = (BiTree)malloc(sizeof(BiTNode));
                t -> data = c;
                createBiTree(t -> lchild);
                createBiTree(t -> rchild);
        }
}

/*先序遍历二叉树*/
void preOrder(BiTree t)
{
        if(t)
        {
            printf("%c", t -> data);
            preOrder(t -> lchild);
            preOrder(t -> rchild);
        }
        else
                printf("this is a empty tree!");
}
int main()
{
        BiTree t = NULL;
        clrscr();
        printf("create a tree:");
        createBiTree(t);
        printf("preOrder the tree:");
        preOrder(t);
        getch();
        return 0;
}
搜索更多相关主题的帖子: 二叉树 遍历 
2008-11-11 12:52
hbcfxz
Rank: 1
等 级:新手上路
威 望:1
帖 子:11
专家分:0
注 册:2008-4-27
收藏
得分:0 
感觉你的递归创建二叉树好像有点问题
2008-11-13 17:10
fp151
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2010-12-21
收藏
得分:0 
你没有包含头文件 <stdlib.h>
2.你的那个getchar 写错了
3.clrscr(); 把这个删掉
2010-12-22 23:43
fp151
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2010-12-21
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef char TElemType;
typedef struct BiTNode
{
        TElemType data;
        struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;

/*递归创建一个二叉树*/
void createBiTree(BiTree t)
{
        char c;
        c = getchar();
        if(c == 's')
        {
                t = NULL;
        }
        else
        {
                t = (BiTree)malloc(sizeof(BiTNode));
                t -> data = c;
                createBiTree(t -> lchild);
                createBiTree(t -> rchild);
        }
}

/*先序遍历二叉树*/
void preOrder(BiTree t)
{
        if(t)
        {
            printf("%c", t -> data);
            preOrder(t -> lchild);
            preOrder(t -> rchild);
        }
        else
                printf("this is a empty tree!");
}
int main()
{
        BiTree t = NULL;
       
        printf("create a tree:");
        createBiTree(t);
        printf("preOrder the tree:");
        preOrder(t);
        getchar();
        return 0;
} 
2010-12-22 23:44
灿烂烟火
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:12
专家分:36
注 册:2011-5-10
收藏
得分:0 
修改后的函数如下:
/*递归创建一个二叉树*/
 BiTree createBiTree(BiTree t)
 {
         char c;
         c = getchar();
         if(c == 's')
         {
                 t = NULL;
         }
         else
         {
                 t = (BiTree)malloc(sizeof(BiTNode));
                 t -> data = c;
                 createBiTree(t -> lchild);
                 createBiTree(t -> rchild);
         }
         return t;
 }
2011-06-13 22:19
快速回复:看看先序创建,遍历二叉树哪错了,谢谢!?
数据加载中...
 
   



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

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