C语言编程实现,已知一颗以二叉链表存储的二叉树,int型,求二叉树节点高度
时间: 2025-01-05 20:38:29 浏览: 7
在C语言中,计算一棵二叉树的节点高度(即最大深度),可以使用递归的方式来实现。假设我们有一个结构体`Node`表示二叉树的节点,包含一个整数值`val`和两个指向左右子节点的指针`left`和`right`,我们可以编写如下的函数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构
typedef struct Node {
int val;
struct Node* left;
struct Node* right;
} Node;
// 计算二叉树的高度
int maxDepth(Node* root) {
if (root == NULL) { // 如果根节点为空,返回0
return 0;
} else {
// 分别计算左子树和右子树的最大深度,然后取较大者加1
int left_depth = maxDepth(root->left);
int right_depth = maxDepth(root->right);
// 返回当前节点所在层次的最大值
return (left_depth > right_depth ? left_depth : right_depth) + 1;
}
}
int main() {
// 创建示例二叉树并初始化
Node* tree = ...; // 初始化二叉树
int height = maxDepth(tree);
printf("The height of the binary tree is: %d\n", height);
free(tree); // 清理内存
return 0;
}
```
在这个例子中,`maxDepth`函数会递归地检查每个节点,直到遇到空节点为止。每次递归调用都会减小问题规模,最后返回的结果就是整个树的高度。
阅读全文