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

为什么小弟我用先建立的二叉树,递归调用结束不了?

2013-10-23 
为什么我用先建立的二叉树,递归调用结束不了??????代码如下Bitree CreatTree(Bitree &T){Elem chcoute

为什么我用先建立的二叉树,递归调用结束不了??????
代码如下

Bitree CreatTree(Bitree &T)
{
Elem ch;
cout<<"enter the data: \n";
cin>>ch;
if(ch=='#')
T = NULL;
else
{
T->data = ch;
CreatTree(T->lch);
CreatTree(T->rch);
}
return T;
}
二叉树 递归 c C++ 算法
[解决办法]
你这个函数,怎么没有看到为新节点分配内存空间的操作...
[解决办法]

#include<iostream>
//#include<stdlib.h>
using namespace std;
typedef char Elem;
typedef struct TNode{
Elem data;//数据域
struct TNode *lch,*rch;//左右孩子指针
}TNode,*Bitree;
Bitree CreatTree(Bitree T)
{
Elem ch;
cout<<"enter the data: \n";
cin>>ch;
if(ch=='#')
T = NULL;
else
{
T->data = ch;
T->lch=(Bitree)malloc(sizeof(TNode));
CreatTree(T->lch);
T->rch=(Bitree)malloc(sizeof(TNode));
CreatTree(T->rch);
}
return T;
}
int main(){
TNode T;
CreatTree(&T);
return 0;
}

可以结束,但是你要输入多个#,因为在运行的过程中会根据你的输入产生多个结束,每个结点都要输入#来结束

热点排行