关于二叉树创建时结构体指针的用法

关于二叉树创建时结构体指针的用法

在创建二叉树时我们常常这样用typedef声明一个结点类型和一个二叉树链表:
图片说明

typedef struct BiNode{ //二叉链表定义
char data;
struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;
这里用typedef声明了一个结点类型BiTNode,BiTree在这里是一个结构体指针。
在创建一个二叉树时我们常常这样定义一个创建函数:
图片说明

在这个创建二叉树函数中传入的参数为BiTree &T,也就是说要传入一个结构体指针的指针给函数CreateBiTree,我的问题来了,既然BiTree已经是一个指针类型了,为什么不直接传入BiTree T这样一个一重指针啊,为什么要传入一个指针的指针啊?我知道在软件开发中有时为了避免值传递造成的影响常常向函数传递一个指针就行了,但不明白这里为什么要传递一个二重指针啊?因为BiTree是一个指针类型的修饰符……

当前节点,左子结点指针,右子节点指针

因为形参传递给实参时 实参是空的 传给形参 进行函数 函数结束后释放空间 但是这个时候实参还是空的 二叉树或者链表的增删改操作时 需要修改指针的指向 必须要用指针的指针或者指针的引用