c语言递归求二叉树的高度
时间: 2024-12-28 21:35:35 浏览: 17
在C语言中,递归是一种常用的解决二叉树高度问题的方法。二叉树的高度是指从根节点到最远叶子节点的最长路径上的边数。这里是一个简单的递归函数示例,用于计算二叉树的高度:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 计算二叉树高度的递归函数
int height(TreeNode* root) {
// 基本情况:空树或只有一个节点的树高度为0
if (root == NULL) {
return 0;
}
// 非空树的情况,左子树和右子树的高度加1即为当前树的高度
int left_height = height(root->left);
int right_height = height(root->right);
// 返回较大高度作为结果
return (left_height > right_height) ? left_height + 1 : right_height + 1;
}
// 示例用法
int main() {
// 初始化一个示例二叉树...
// ... 然后调用height函数并打印结果
TreeNode *exampleRoot = createExampleTree(); // 创建实际的树
int treeHeight = height(exampleRoot);
printf("The height of the binary tree is: %d\n", treeHeight);
return 0;
}
```
在这个例子中,`height()` 函数会不断地递归检查当前节点的左右子树,直到找到空树为止。然后返回从当前节点到叶节点的最大深度。
阅读全文