我写了个二叉树的插入程序,可是不知为什么,对于二叉树根结点的左边子树有效,右边的无效。比如
应该是递归出差,无法正确退出每一层递归。 最好贴出代码。另外推荐画图工具:最简单的ppt,专业点的visio,当然还有别的,希望别画得这么累。######美术功力有待提高啊。。。######上此我已经说过了。从上次的代码中,你的树的递归操作有问题。导致都只能对左边和自己的结点赋值。自然右边无效。
###### BiTree Insert_L(BiTree bt, char x, BiTree parent) //二叉树的左插入函数 { BiTree p; if(parent==NULL) { printf("\n插入错误"); return NULL; }
if((p=(BiTNode*)malloc(sizeof(BiTNode)))==NULL) return NULL; p->data=x; p->lchild=NULL; p->rchild=NULL;
//这里只给父亲节点的左子树赋值怎么可能在c节点的右边加上f节点呢? //如果改成下面就可以了 /* if(parent->rchild == NULL) parent->rchild = p; else { p->lchild = parent->rchild; parent->rchild = p; } */ if(parent->lchild==NULL) parent->lchild=p; else { p->lchild=parent->lchild; parent->lchild=p; } return bt; } 构造你的例子中的树的输入是: a b d 0 0 e 0 0 c 0 0 插入f节点: 9 f f 被插入到 c的左子树位置, ######感谢你这热心的网友,人间有真情啊
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。