ElmLiu 发表于 2018-3-23 22:44:49

关于小甲鱼讲的二叉树创建的问题

BiTree已经是指向结构体的指针了,在定义函数creatBiTree()时,视频里参数写的是 creatBiTree(BiTree *T),为什么这里要用二级指针呢?
我没有用二级指针,把函数定义成了creatBiTree(BiTree T),在main()函数中初始化BiTree T=NULL;创建完成后先序遍历的时候好像直接就认为根节点是空指针,这是为什么?

丶忘却的年少o 发表于 2018-3-24 09:55:06

前言:有点啰嗦,如果只是了解看前两段,最后一大段是个补充(纯属个人啰嗦)
如果要修改指针本身的指向就需要将指针取地址,也就是二级指针去改变指针本身的值。
如果没办法理解上面那句话,你可以换个角度想一下:你有一个 int a=1,现在要改变a,让a=2,通过指针改变的话是不是 *p = &a,*p = 2,这样就可以改变了 a 的值为2。同理,一级指针就是 a,要改变 a,那就对它取地址变成指针(二级指针)。
说到这里,就不得不提一下传参的问题,如果只是传递变量,那到被调用的函数里,操作的就不是原本的那个变量了,而是它的一个副本,就算在函数中改变了这个参数的值,当函数返回并不能改变调用该函数的函数中的值。要是想改变就只能传递指针、引用(C++中的),这样传递过去的就是该参数的地址,既然找到了地址,改变值就肯定会影响到变量本身,而不存在了副本。
页: [1]
查看完整版本: 关于小甲鱼讲的二叉树创建的问题