二叉树为什么传入二级指针
时间: 2023-11-14 19:35:20 浏览: 53
在C语言中,函数参数传递是按值传递的,也就是说,在函数调用时,函数参数所代表的实参值被复制到相应的形参中,函数对形参的修改不会影响实参的值。如果我们想在函数内部修改一个指针的值,使其指向新的内存地址,那么就需要传入该指针的地址,也就是指针的指针。
在二叉树的插入、删除、查找等操作中,我们通常需要修改树中某个节点的指针,使其指向新的节点或者NULL。因此,如果我们要在函数内部修改树节点的指针,就需要传入该节点指针的地址,也就是二级指针。
因此,传入二级指针可以让函数修改原指针的值,从而达到修改树节点指针的目的。
相关问题
二叉树为什么用二级指针
在二叉树的操作中,我们需要对树节点进行修改操作,如插入、删除等。而二叉树的节点结构体中包含了指向左右子节点的指针,如果我们使用单级指针来访问和修改节点,那么在进行插入、删除等操作时,需要修改指针指向的节点,这会影响到原来节点的指针指向,从而导致问题。
使用二级指针可以解决这个问题。我们可以通过传递指向指针的指针(即二级指针),来实现对节点指针的修改。这样就可以在进行插入、删除等操作时,不影响原来的节点指针。
例如,对于一个插入操作,在函数中通过二级指针来传递指向节点的指针,如果要在节点的左子树中插入一个新节点,我们可以使用下面的代码:
```
void insert(TreeNode** root, int val) {
if (*root == nullptr) {
*root = new TreeNode(val);
return;
}
// 在左子树中插入新节点
insert(&((*root)->left), val);
}
```
这样,我们就可以通过传递指向指针的指针,来实现对节点指针的修改。
二叉树为什么要用二级指针
在C语言中,函数传递参数时是通过值传递的方式进行的。如果我们要在函数中修改某个指针的值,我们需要传递该指针的地址(即指针的指针)。对于二叉树来说,每个节点都有左右子节点,而左右子节点本身也是指针类型的变量。因此,如果我们要在函数中修改某个节点的左右子节点,我们需要传递该节点指针的地址,以便在函数中通过二级指针来修改节点的左右子节点指针的值。这就是为什么二叉树中要使用二级指针的原因。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)