m0_62138486 2022-10-24 12:02 采纳率: 98.6%
浏览 15
已结题

创建二叉树那块为什么调用自身的时候要加上取地址符

img

我的代码

#include<stdio.h>
#include<stdlib.h>

typedef struct BiTNode
{
char data;
struct BiTNode *left, *right;
}BiTNode, *BiTree;

void CreatBiTree(BiTree *T) //创建二叉树
{
char a;
scanf("%c",&a);
if(a=='#') *T=NULL;
else
{
*T=(BiTree)malloc(sizeof(BiTNode));
(*T)->data=a;
CreatBiTree(&(*T)->left);
CreatBiTree(&(*T)->right);
}
}

void show(BiTree T) //递归中序遍历二叉树
{
if(T)
{
show(T->left);
printf("%c",T->data);
show(T->right);
}
}

int main()
{
BiTree T;
CreatBiTree(&T);
show(T);

return 0;

}

展开全部

  • 写回答

1条回答 默认 最新

  • 莪是男神 2022-10-24 13:19
    关注

    调用取地址符,这样能保证是在一棵树上的,如果不这么写, 那这个二叉树在递归调用的时候,树和数之间就会断开,你的可能就会成为仅有根节点的树

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    m0_62138486 2022-10-24 13:31

    为什么会断开啊?取地址后实参代表的为二级指针所在空间位置,形参不久变为三级指针了嘛

    1
    回复
    莪是男神 回复 m0_62138486 2022-10-24 13:38

    不会,因为是递归调用

    2
    回复
    莪是男神 回复 m0_62138486 2022-10-24 13:39

    变为三级的是树的孩子,不是树的根节点

    2
    回复
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 11月1日
  • 已采纳回答 10月25日
  • 创建了问题 10月24日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部