用C语言,求二叉树深度
时间: 2024-12-20 18:16:15 浏览: 15
在C语言中,求解二叉树的深度(高度)通常使用递归方法。二叉树的深度是从根节点到最远叶子节点的最长路径上的边数。下面是一个简单的函数示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 求二叉树深度的辅助函数
int maxDepth(struct TreeNode* root) {
// 如果树为空,深度为0
if (root == NULL) {
return 0;
}
// 递归计算左子树和右子树的最大深度,取较大者加1作为当前深度
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
// 返回较大的那个深度加1
return (leftDepth > rightDepth ? leftDepth : rightDepth) + 1;
}
// 测试
int main() {
// 创建一个样例二叉树
TreeNode* root = malloc(sizeof(TreeNode));
root->val = 1;
root->left = malloc(sizeof(TreeNode));
root->left->val = 2;
root->right = malloc(sizeof(TreeNode));
root->right->val = 3;
root->left->left = malloc(sizeof(TreeNode));
root->left->left->val = 4;
int depth = maxDepth(root);
printf("二叉树的深度是: %d\n", depth);
free(root);
return 0;
}
```
在这个例子中,`maxDepth`函数会递归地检查每个节点,如果遇到空节点,则返回0,否则继续递归直到找到所有子节点,然后返回最大深度。
阅读全文