用递归求二叉树最大深度,用C语言编写
时间: 2024-09-27 12:09:53 浏览: 30
非递归二叉树前序遍历.zip_C语言_SPO _数据结构 递归
在C语言中,你可以使用递归来计算二叉树的最大深度。递归是一种将大问题分解成更小的相似问题并逐个解决的技术。对于二叉树来说,它的最大深度就是其左子树和右子树深度的最大值加一。下面是一个简单的函数来实现这个功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 递归函数,计算二叉树最大深度
int maxDepth(TreeNode* root) {
if (root == NULL) { // 如果根节点为空,则返回0
return 0;
} else {
// 左子树和右子树的深度分别递归求解,取较大者加1
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
// 返回当前节点所在的高度,即两者的较大值加1
return 1 + (leftDepth > rightDepth ? leftDepth : rightDepth);
}
}
int main() {
// 初始化二叉树实例...
// 调用maxDepth函数得到最大深度
int depth = maxDepth(yourBinaryTreeRoot);
printf("The maximum depth of the binary tree is %d\n", depth);
return 0;
}
```
在这个示例中,你需要替换`yourBinaryTreeRoot`为实际的二叉树根节点指针。当你运行`main`函数时,它会计算并打印出给定二叉树的最大深度。
阅读全文