二叉树创建的二级指针的原理
关于二叉树创建需要用到二级指针,这里主要是函数的参数传入的有点绕弯。
下面画个草图 示意一下为什么创建的时候要用二级指针
在这里插入图片描述
定义一个 A和C变量,他们都有各自分配的地纸。
int A = 1,C = 10;
定义一个指针p指向A;
int *p = &A;
二叉树的二级指针主要是针对 在函数中让p从指向A改为指向C,像下图一样;
不使用函数调用固然好操作,但是涉及到使用函数,就有参数复制的问题,如下图所示,
此处 定义一个函数
int A = 1,C = 10;
int *p = &A;
main
{
fun§;
}
void fun(int *p)
{
p = &C
}
这里的fun内部的p只是全局变量p的一个复制 ,在下图中用p’表示。
在fun内部怎么操作p’,函数结束后全局变量p还是指向A的地址块。
那么就需要二级指针,在函数调用时,让指针的指向更改指向的地方。
int A = 1,C = 10;
int *p = &A;
main
{
fun(&p);
}
void fun(int **q)
{
*q= &C;
}
这时候 采用二级指针进行调用,fun函数进行复制,得到一份q’的复制,此时可以直接操作p指针进行更改指向C地址块,当函数调用结束后q’消失,q仍然指向p,p却已经转向了C的地方。
同理二叉树的创建也是如此操作二级指针。