| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 595 人关注过本帖
标题:一个关于双叉树实现的算法,输出有问题。望斧正
只看楼主 加入收藏
河马拔河
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2011-3-21
结帖率:77.78%
收藏
已结贴  问题点数:10 回复次数:4 
一个关于双叉树实现的算法,输出有问题。望斧正
程序代码:
#include<stdio.h>
#include<malloc.h>
typedef struct Node
{
    char data;
    struct Node* LChild;
    struct Node* RChild;
} BiNode,*BiTree ;
//定义二叉树
int CreateBiTree(BiTree *bt)
{
    char ch;//树内的值
    ch=getchar();
    if (ch=='.') *bt=0//定义空;
                         else
        {
            *bt=(BiTree)malloc(sizeof(BiNode));
            (*bt)->data=ch;
            CreateBiTree(&((*bt)->LChild));
            CreateBiTree(&((*bt)->RChild));
        }
    return 0;
}//用递归二叉树的建立
int PreOrder(BiTree root)
{
    if (root!=0)
    {
        printf("%c",&root->data);
        PreOrder(root->LChild);
        PreOrder(root->RChild);
    };
    return 0;
}//用递归输出
int main ()
{

    int CreateBiTree(BiTree* bt);
    int PreOrder(BiTree root);
    BiNode a;
    BiTree b;
    b=&a;
    CreateBiTree(&b);
    PreOrder(&a);
    return 0;
}
搜索更多相关主题的帖子: 算法 
2011-11-24 12:30
河马拔河
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2011-3-21
收藏
得分:0 
2011-11-24 16:43
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:7 
错误一:
int PreOrder(BiTree root)
{
    if (root!=0)
    {
        printf("%c",&root->data); root是Node* 一维的 去掉&

错误二
  BiNode a;
    BiTree b;
    b=&a;
    CreateBiTree(&b);
    PreOrder(&a);
b一开始指向了a的地址 但是在CreateBiTree函数里b的指向被改变
a没有被初始化,创建的树也与a无关 改为PreOrder(b);


2011-11-24 17:20
silent_world
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:258
专家分:1138
注 册:2011-9-24
收藏
得分:3 
#include<stdio.h>
#include<malloc.h>

typedef struct Node
{
     int data;
     struct Node* LChild;
     struct Node* RChild;
} BiNode,*BiTree ;
//定义二叉树

int CreateBiTree(BiTree *bt)
{
     int ch;//树内的值
     printf("Please input value!\n");
     scanf("%d", &ch);
     if (0 == ch) *bt=0;   //定义空;
          else
     {
          *bt=(BiTree)malloc(sizeof(BiNode));
          (*bt)->data=ch;
          CreateBiTree(&((*bt)->LChild));
          CreateBiTree(&((*bt)->RChild));
     }
     return 0;
}//用递归二叉树的建立
int PreOrder(BiTree root)
{
     if (root!=0)
     {
          printf("%d", root->data);
          PreOrder(root->LChild);
          PreOrder(root->RChild);
     };
     return 0;
}//用递归输出

int main ()
{
     
     int CreateBiTree(BiTree* bt);
     int PreOrder(BiTree root);
     BiNode a;          //????
     BiTree b;

     b=&a;              //????
     CreateBiTree(&b);
     PreOrder(b);
     return 0;
}

你用上面这段试试。建立二叉树没什么问题。

2011-11-24 17:39
河马拔河
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2011-3-21
收藏
得分:0 
回复 3楼 hahayezhe
2011-11-25 11:47
快速回复:一个关于双叉树实现的算法,输出有问题。望斧正
数据加载中...
 
   



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

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