(2)使用递归解决二叉树的深度问题。设计一个C语言函数,计算二叉树的最大深度。
时间: 2024-09-23 20:02:33 浏览: 79
在C语言中,我们可以使用递归来解决二叉树的最大深度问题。最大深度即树中最远叶节点到根节点的距离。下面是一个简单的`maxDepth`函数示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 计算二叉树最大深度的递归函数
int maxDepth(TreeNode* root) {
// 基本情况:如果根节点为空,返回0
if (root == NULL) {
return 0;
}
// 递归情况:分别计算左子树和右子树的深度,然后取较大值加一
int left_depth = maxDepth(root->left);
int right_depth = maxDepth(root->right);
// 返回两子树深度中的较大者加1,代表当前节点所在层次
return (left_depth > right_depth ? left_depth + 1 : right_depth + 1);
}
int main() {
// 测试例子
TreeNode *tree = // 初始化您的二叉树...
printf("The maximum depth of the binary tree is %d\n", maxDepth(tree));
return 0;
}
```
在这个函数中,我们首先检查根节点是否为空,如果是,则返回0表示树的高度为0。接着对左右子树递归地调用`maxDepth`函数,并返回两者中的较大值加1,这就是当前节点所在的层次。
阅读全文