跪求高手,如何输入n来建立一个深度为n的满二叉树,C语言的
答案:2 悬赏:20
解决时间 2021-02-19 10:34
- 提问者网友:风华是一指流沙
- 2021-02-19 07:17
跪求高手,如何输入n来建立一个深度为n的满二叉树,C语言的
最佳答案
- 二级知识专家网友:安稳不如野
- 2021-02-19 08:31
typedef struct node{
node * leftChild;
node * rightChild;
int data;
}treeNode;
void createFullTree(int deep,treeNode * root){
treeNode * left = (treeNode *)malloc(sizeof(treeNode));
treeNode * right = (treeNode *)malloc(sizeof(treeNode));
root->leftChild = left;
root->rightChild = right;
--deep;
if(deep > 0){
createFullTree(deep,left);
createFullTree(deep,right);
}
else{
return;
}
}
差不多这个意思,你自己仔细看看
node * leftChild;
node * rightChild;
int data;
}treeNode;
void createFullTree(int deep,treeNode * root){
treeNode * left = (treeNode *)malloc(sizeof(treeNode));
treeNode * right = (treeNode *)malloc(sizeof(treeNode));
root->leftChild = left;
root->rightChild = right;
--deep;
if(deep > 0){
createFullTree(deep,left);
createFullTree(deep,right);
}
else{
return;
}
}
差不多这个意思,你自己仔细看看
全部回答
- 1楼网友:一池湖水
- 2021-02-19 09:13
这里其实有个很有去的问题,上帝终于把自己搬起来了。
在c中函数可以自己调用自己递归,所以在deep的函数里面还有deep。
在第一次运行后,rd+1(如果rd较大)被赋值给了deep,然后rd=deep,所以rd就被+1了,要是一直有next就一直做下去,知道最后,每次+1.
加的:比如从头节点开始,第一个结点为a,最开始t为指向都结点的指针,然后在if(!t)中判断,因为t不为null(在ascii中的值为0)所以!t为假,所以运行else,ld和rd在初始化时为1,然后运行id=deep(t->lchild)=1和rd=deep(t->rchild)=1此时的t->lchild将被带回到t中,下次运行时此处变为t->lchild->child,这样树就往下搜索了(或指向左边这个在后面的循环种可能出现)、然后判断if(ld>rd)然后运行return ld+1这个值被返回到外面的int deep(tree t)中然后第二次循环时rd=deep(tree t)的值就是ld+1这样就相当于count+1了再循环是将再判断,再+1,就可以得到结果了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |