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

我写了一个有关二叉树的创建和先序遍历的程序,代码如下:
#include "stdio.h"
#include <stdlib.h>

#define FALSE 0
#define TRUE 1
#define BOOL bool
#define NULL 0

typedef struct BiTNode{
char chData; //元素
struct BiTNode *lchild, *rchild; //左孩子、右孩子
}BiTNode, *BiTree;

void CreateBiTree(BiTree& T)
{
char ch;

scanf("%c%c", &ch);

if(ch=='\n')
{
printf("ch=NULL\n");
T = NULL;
}
else{
T=(BiTree)malloc(sizeof(BiTNode));
if(!T)
{
printf("malloc fail\n");
return ;
}

T->chData = ch; //生成根结点
printf("请输入%c的左孩子:\n", ch);
CreateBiTree(T->lchild); //构造左子树
printf("请输入%c的右孩子:\n", ch);
CreateBiTree(T->rchild); //构造右子树
printf("construct right\n");
}

return ;
}

void PreOrder(BiTree T) //对二叉树进行先序遍历
{
if (T){
printf("%c",T->chData);
PreOrder(T->lchild);
PreOrder(T->rchild);
}//end of if
}//end of preorder

int main(int argc, char*& argv)
{
BiTree b1;
int iPos = 0;

printf("请输入节点元素值(没有孩子元素就直接回车):\n");
CreateBiTree(b1);

PreOrder(b1);
return TRUE;
}
运行没问题,但是只要删除printf("ch=NULL\n");或者printf("construct right\n");
就会出现不停滚屏的情况,简直就是闻所未闻!而且打印的内容长度还不能小,如果删除了construct right的一个字母一样不行。请教各位高手指点!
是在WIN2000下由cl编译的。

搜索更多相关主题的帖子: 二叉树 
2006-05-19 08:59
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
scanf("%c%c", &ch);
BiTree b1;
int main(int argc, char*& argv)

都有问题

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-19 10:55
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 

问题出在用前序构造树里...
scanf("%c%c", &ch);//应该是 scan("%c",&ch); getchar();


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-05-20 10:49
快速回复:一个有关二叉树的非常奇怪的问题!!
数据加载中...
 
   



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

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