递归创建二叉树是怎么执行的

voidCreatBiTree(BiTree&T)charch;ch=getchar()T->data=ch;CreatBiTree(T->lchild);CreatBi... void CreatBiTree(BiTree &T)
char ch;
ch=getchar()
T->data=ch;

CreatBiTree(T->lchild);
CreatBiTree(T->rchild);
展开
 我来答
r1renhw
2012-11-02 · TA获得超过1577个赞
知道小有建树答主
回答量:810
采纳率:100%
帮助的人:421万
展开全部
/*
这有个例子 你先看看吧
*/
# include <stdio.h>
# include <stdlib.h>
//节点结构体
typedef struct BiTNode
{
char data;
struct BiTNode * lchild,* rchild;
}BiTNode, *BiTree;
//按先序次序输入二叉树中结点的值(字符型)
//构造二叉链表表示的二叉树T,0表示空(子)树
void CreateBiTree(BiTree * T)
{
char ch;
fflush(stdin);
ch = getchar();
if (ch == '0')//空
{
* T = NULL;
}
else
{
* T = (BiTree)malloc(sizeof(BiTNode));//生成根结点
if (! T)
{
exit(-1);
}
(* T)->data = ch;
printf("%c的左孩子节点:\n", ch);
CreateBiTree(&(* T)->lchild);//构造左子树
printf("%c的右孩子节点:\n", ch);
CreateBiTree(&(* T)->rchild);//构造右子树
}
}
void PreTravel(BiTree T)
{
if(T)
{
printf("%c ",T->data);
PreTravel(T->lchild);
PreTravel(T->rchild);
}
}
//操作结果:构造空的二叉树T
void InitBiTree(BiTree * T)
{
* T = NULL;
}
int main()
{
BiTree T;
InitBiTree(&T);
printf("请输入一个char类型结点:\n");
CreateBiTree(&T);
printf("先序遍历二叉树\n");
PreTravel(T);
printf("\n");
return 0;
}
/*
--------
请输入一个char类型结点:
a
a的左孩子节点:
b
b的左孩子节点:
0
b的右孩子节点:
0
a的右孩子节点:
c
c的左孩子节点:
0
c的右孩子节点:
0
先序遍历二叉树
a b c
Press any key to continue

---------
*/
zhjiemm
2012-11-02 · TA获得超过2643个赞
知道大有可为答主
回答量:1834
采纳率:75%
帮助的人:715万
展开全部
你这个递归有问题,没有终结。

应该加一个判断条件,否则就会一直递归调用下去。

应为:
void CreatBiTree(BiTree &T)
{
char ch;
ch=getchar()
T=0;
T->lchinld = 0;
T->rchinld = 0;

if(ch==0)
return ;
T = new (BTree);
T->data=ch;

CreatBiTree(T->lchild);
CreatBiTree(T->rchild);
}

参考资料: http://hi.baidu.com/new/zhjiemm

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzh刘振华0
2012-11-02 · 超过18用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:49.2万
展开全部
主要有两个方面:
1 递归的初始条件
2 递归的函数
你可以从初始条件开始递归两三次就会明白了。
其实递归用的多了就知道怎么回事了,熟能生巧。
更多追问追答
追问
就是看不懂怎么递归创建的
追答
首先要明白void CreatBiTree( BiTree&T)中BiTree是什么样的数据结构,应该是 一个结构体
struct BiTree{
struct BiTree *lchild, *rchild;
char data;
};
在根据你要建立的二叉树,比如按照字符的大小顺序(在iisac码中的排列)来建立二叉树。
本来想举个例子,可是你的代码太少了,不知道能不能给个完整的,上面的代码看不出来递归的初始条件啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式