题目描述:给定一个二叉树的根节点 root,计算并返回该二叉树的最大深度。 提示: • 二叉树的最大深度是从根节点到叶节点的最长路径上的节点数。 • 空树的深度为 0。C语言
时间: 2024-11-04 21:14:03 浏览: 35
题目要求您编写一个C语言程序,用于计算给定二叉树的最大深度。最大深度可以通过递归的方式来求解。以下是简单的算法步骤:
1. **基本情况**:如果根节点为空(NULL),那么树的深度就是0。
2. **递归步骤**:对于非空的根节点,计算左子树和右子树的最大深度,然后取两者的较大值加一,即`max(max(left_depth), max(right_depth)) + 1`。这里`left_depth` 和 `right_depth` 分别表示左子树和右子树的最大深度。
以下是一个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 {
// 递归获取左右子树的最大深度,加上当前节点
int left_depth = maxDepth(root->left);
int right_depth = maxDepth(root->right);
return (left_depth > right_depth) ? left_depth : right_depth + 1; // 返回较大的深度加1
}
}
// 主函数测试
int main() {
// 创建一个示例二叉树,并调用函数计算其最大深度
TreeNode* tree = /* 根据实际数据构建二叉树 */;
int depth = maxDepth(tree);
printf("The maximum depth of the binary tree is %d.\n", depth);
return 0;
}
```
阅读全文