递归求二叉树最大深度C语言
时间: 2024-09-27 08:01:24 浏览: 39
递归是一种常见的解决二叉树问题的方法,特别是计算其最大深度。在C语言中,我们可以定义一个函数来递归地找到给定二叉树的最大深度。这里是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 计算二叉树最大深度的辅助函数
int maxDepthHelper(TreeNode* root, int depth) {
if (root == NULL) { // 如果遇到空节点,返回当前深度
return depth;
}
// 递归地计算左子树和右子树的最大深度,并取较大值
return MAX(maxDepthHelper(root->left, depth + 1), maxDepthHelper(root->right, depth + 1));
}
// 主函数,获取并打印最大深度
int maxDepth(TreeNode* root) {
if (root == NULL) {
return 0; // 空树的最大深度为0
} else {
return maxDepthHelper(root, 1); // 起始深度设为1
}
}
int main() {
// 创建示例二叉树...
// ...
TreeNode* root = ...;
int depth = maxDepth(root);
printf("二叉树的最大深度是: %d\n", depth);
return 0;
}
```
在这个代码中,`maxDepthHelper` 函数是递归的核心部分,它会一直递归到叶子节点,然后返回从根到叶子节点的最长路径长度。主函数`maxDepth`则是外部的入口点,负责创建树实例并调用辅助函数。
阅读全文