| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 596 人关注过本帖
标题:二叉树创建的问题
只看楼主 加入收藏
yangchuan545
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-5
收藏
 问题点数:0 回复次数:3 
二叉树创建的问题

我自己写了个二叉树的创建程序,在创建输入节点的数据的时候总是不能中止,从而不能进入遍历函数的执行,
代码我贴出来,希望得到指教,谢谢!
#include "stdio.h"
#include "malloc.h"
// #define NULL 0

typedef int DataType;
typedef struct node{
DataType data;
struct node *lchild,*rchild;
}BitNode;
typedef BitNode *BitTree;

BitTree CreateTree()
{
BitNode *t;
DataType x;
scanf(" %d",&x);
if(x==0) t=NULL;
else
{
t=(BitNode *)malloc(sizeof(BitNode));
t->data=x;
t->lchild=CreateTree();
t->rchild=CreateTree();
}
return t;
}

void inorder(BitTree t)
{
if(t!=NULL)
{
inorder(t->lchild);
printf(" %d ",t->data);
inorder(t->rchild);
}
}

void main(void)
{
BitTree root;
printf("\n");
root=CreateTree();
inorder(root);
}

搜索更多相关主题的帖子: 二叉树 
2006-11-11 12:55
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
BitTree CreateTree()
{
BitNode *t;
DataType x;
scanf(" %d",&x);
if(x==0) t=NULL;
else
{
t=(BitNode *)malloc(sizeof(BitNode));
t->data=x;
t->lchild=CreateTree();
t->rchild=CreateTree();
}
}
第n次你需要输入n^2个0才结束啊
构造函数需要返回值么??

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-11-11 13:27
yangchuan545
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-5
收藏
得分:0 
我返回的是根节点
2006-11-11 15:17
happyboe
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-10-27
收藏
得分:0 
程序没有问题,楼主应该检查一下自己输入的测试数据是否输入正确.程序可以正常中止的.另外不太认同楼主在构造函数里返回指针的做法,因为递归算法如果递归次数很深的话,有返回值可能会使程序执行效率地下,建议使用指针作参数传参;
void CreateTree(BitTree root)
{
DataType x;
scanf(" %d",&x);
if(x==0) root=NULL;
else
{
root=(BitNode *)malloc(sizeof(BitNode));
root->data=x;
CreateTree(root->lchild);
CreateTree(root->rchild
}
}
2006-11-11 21:43
快速回复:二叉树创建的问题
数据加载中...
 
   



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

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