用C语言求二叉树高度 用二叉链表创建一棵二叉树并利用递归算法求它的高度。
时间: 2024-02-18 19:03:57 浏览: 73
C语言代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
int tree_height(TreeNode* root) {
if (!root) {
return 0;
}
int left_height = tree_height(root->left);
int right_height = tree_height(root->right);
return (left_height > right_height ? left_height : right_height) + 1;
}
int main() {
// 创建一棵二叉树
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = 1;
root->left = (TreeNode*)malloc(sizeof(TreeNode));
root->left->val = 2;
root->left->left = NULL;
root->left->right = NULL;
root->right = (TreeNode*)malloc(sizeof(TreeNode));
root->right->val = 3;
root->right->left = (TreeNode*)malloc(sizeof(TreeNode));
root->right->left->val = 4;
root->right->left->left = NULL;
root->right->left->right = NULL;
root->right->right = (TreeNode*)malloc(sizeof(TreeNode));
root->right->right->val = 5;
root->right->right->left = NULL;
root->right->right->right = NULL;
// 计算二叉树高度
int height = tree_height(root);
printf("二叉树的高度为:%d\n", height);
return 0;
}
```
在这个程序中,我们定义了一个`TreeNode`结构体表示二叉树节点,其中包含`val`表示节点的值,`left`和`right`分别表示左右子树指针。接着,我们定义了一个`tree_height`函数用于递归计算二叉树高度。在函数中,先判断当前节点是否为空,如果为空,则返回0;否则,分别递归求解左子树和右子树的高度,最后返回左右子树高度的较大值加1。
在`main`函数中,我们创建了一棵二叉树,并调用`tree_height`函数计算它的高度。最后,程序输出二叉树的高度。
阅读全文