为什么创建二叉树时递归函数的参数用*T,而求二叉树深度时递归函数的参数为T?
时间: 2024-05-31 08:14:56 浏览: 10
这是因为创建二叉树时需要不断地创建新节点,递归函数需要对节点进行修改和操作,因此需要传递二叉树的指针(即二级指针),以便在递归函数中对节点进行修改。而求二叉树深度时,递归函数只需要遍历节点,不需要修改节点,所以只需要传递二叉树的指针即可,不需要传递二级指针。因此,在创建二叉树时递归函数的参数为*T,而求二叉树深度时递归函数的参数为T。
相关问题
为什么创建二叉树用*T,求二叉树的深度用T?
在 C 语言中,使用指针来表示数据结构是比较方便的。因此,我们通常用*T来表示一个二叉树节点的指针。同时,我们也可以用T来表示整个二叉树的根节点的指针。
当我们求一棵二叉树的深度时,我们需要遍历整棵树,并且递归地向下计算每个子树的深度。由于二叉树的每个节点都有左右两个子节点,因此我们需要递归地访问左子树和右子树。为了方便表示,我们通常将这个递归函数的参数定义为一个指向当前节点的指针 T。
因此,我们使用*T来表示一个二叉树节点的指针,用T来表示整个二叉树的根节点的指针,以及在求二叉树深度时作为递归函数的参数。
编写一个递归函数height,传入参数为二叉树根节点的指针root计算二叉树高度
下面是C++代码实现:
```c++
int height(TreeNode* root) {
if (root == nullptr) {
return 0;
}
int left_height = height(root->left);
int right_height = height(root->right);
return max(left_height, right_height) + 1;
}
```
递归函数的核心思想是求出左右子树的高度,然后取较大值加1即可。如果根节点为空,返回0。
相关推荐
![](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)