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

初学者:关于建二叉树的有关问题

2012-02-21 
菜鸟求救:关于建二叉树的问题以下是我建二叉树用的代码:(利用先序遍历建二叉树法)#includeiostream.h#de

菜鸟求救:关于建二叉树的问题
以下是我建二叉树用的代码:(利用先序遍历建二叉树法)
#include<iostream.h>
#define TElemType char
typedef enum {ERROR=0,OK=1} Status;

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

Status CrtBT_PreOdr(BiTree &T)//按先序遍历建二叉树
{
char ch;
cout<<"输入数据:"<<endl;
cin>>ch;
cout<<endl;
if(ch=' ')
T=NULL;
else
{
T=new(BiTNode);
T->data=ch;
T->lchild=T->rchild=NULL;
CrtBT_PreOdr(T->lchild);
CrtBT_PreOdr(T->rchild);
}
return OK;
}

void main()
{
BiTree T;
CrtBT_PreOdr(T);

}
这样执行没结果,不知错在哪,还有一个问题就是这样样递归下去,
是不是一个死循环呢,这种方法到底能否实现建立二叉树呢?
我是新手,望各位赐教!

[解决办法]
路过。我对数据结构和算法一窍不通,一起学习一下。
没有结果的原因是这行写错了:
if(ch=' ') 
应该是
if(ch==' ')
[解决办法]
其它几个小问题:
1. 不会有死循环,前提是不能用空格表示NULL。cin没法读入空格,建议LZ先随便用哪个字母代替
2. 本帖貌似应该在C++版
3. 应该用#include <iostream>
4. 这么写好一些:typedef char TElemType;


[解决办法]
1楼说的是一个毛病
2楼说的 应该用#include <iostream>不对 lz写的没问题 可以像lz写的 如果写成#include <iostream> 
要加上 using namespace std;

你说你想要执行结果 可是你没有写输出运行结果的函数,当然就没有运行结果,按照你的代码,只是建立一个2叉数
你的递归是写的有问题,你应该给递归加上判断条件
[解决办法]

C/C++ code
typedef char TElemType;typedef enum {ERROR=0,OK=1} Status; typedef struct BiTNode { TElemType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; Status CrtBT_PreOdr(BiTree &T)//按先序遍历建二叉树 { char ch; cout <<"输入数据:" <<endl; cin>> ch; cout <<endl; if(ch=='*')   // 

热点排行