这个二叉树的递归定义到底是如何去实现的,具体点,小弟对这个递归仍然不了解。。。

[复制链接]
查看11 | 回复2 | 2013-1-26 16:45:10 | 显示全部楼层 |阅读模式
就是根据先序遍历顺序,“双亲-左孩子-右孩子”。先创建根节点,如果是“#”,将树根置为空,否则,给该节点分配空间,赋值。然后调用CreatBiTree()创建该节点左子树,然后调用CreatBiTree()创建右子树。不过你的代码有问题吧,,首先if里头应该是ch=='#';其次,bt可以简单那点;还有,没有递归结束条件(姑且认为当ch='@'时结束)void CreatBiTree(BitTree *bt)//用扩展先序遍历序列创建二叉树,如果是#当前树根置为空,否则申请一个新节点//{char ch;ch=getchar();if(ch!='@'){if(ch=='#')bt=NULL;else{...
回复

使用道具 举报

千问 | 2013-1-26 16:45:10 | 显示全部楼层
首先定义了CHAR 类型的ch变量用于存放树的节点,接受一个字符 判断是否等于‘.’若等则说明要建一个空树,否则 开辟一个Bitnode类型的指针 bt来存放,将ch值赋给bt节点的指向,再按顺序分别建立左右孩子CreatBiTree(&((*bt)->LChild));调用了原函数,相当于bt=bt)->LChild;同理 有孩子也是一样的给你我的代码...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行