首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个用C语言编写的二叉树有关问题

2013-06-25 
一个用C语言编写的二叉树问题全部代码如下:#include stdio.h#include iostreamusing namespace std#d

一个用C语言编写的二叉树问题
全部代码如下:

#include <stdio.h>
#include <iostream>

using namespace std;

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define MAX_TREE_SIZE 100

typedef int Status;
typedef int TElemType;

typedef struct BiTNode
{
TElemType data;
struct BiTNode *rchild,*lchild;
}BiTNode, *BiTree;

Status CreateBiTree(BiTree &T){
TElemType ch;//我的TElemType 设置为int
scanf("%d",&ch);//输入一个Int类型的数字,空格,再输入两个数字,回车,无反应。
if(ch==' ')
T=NULL;
else{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}

void Preorder(BiTree T)
{
if(T)
{
printf("%d", T->data);//先序遍历 输出根节点
Preorder(T->lchild);//先序遍历 输出左节点
Preorder(T->rchild);//先序遍历 输出右节点
}
}
void main()
{
BiTree T;
CreateBiTree(T);
Preorder(T);

}
//整段程序在C编译器下,可以运行,就是,执行不了,Preorder函数
//没有输出 C 二叉树 遍历
[解决办法]
if(ch==' ')这里是不是有些问题 ch是int型  所以我觉得改成if(ch==INFEASIBLE)比较合适  其它的没啥问题
 你设计的其实都对了 运行不了可能是你数据输入的不对
例如:          3
            1        2
          4   5 

你得输入3 1 4 -1 -1 5 -1 -1 2 -1 -1 然后按回车 
 
你试试  我就不截结果图了
[解决办法]
我认为你已经定义了TElemType为int那么if(ch==' ')这一句等号右边应该是代表该节点为空时的数字,比如说0.

热点排行
Bad Request.