以二叉链表作存储结构,设计求二叉树高度的算法。可参考二叉树的递归遍历算法进行设计 用c语言实现
时间: 2024-10-24 14:12:29 浏览: 22
在C语言中,我们可以使用递归的方法来计算二叉链表表示的二叉树的高度。这里的关键思路是利用二叉树性质:对于任意一棵非空的二叉树,它的高度等于左子树和右子树高度的最大值加一。下面是具体的算法步骤:
1. 定义一个辅助函数 `height` 来计算给定节点的高度:
- 如果节点为空,则高度为0;
- 否则,递归地计算左子树和右子树的高度,并返回较大的那个加上1。
2. 主函数 `binaryTreeHeight` 则调用 `height` 函数,传入根节点:
- 计算根节点的高度;
- 返回该高度作为整个二叉树的高度。
以下是C语言的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉链表节点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 求二叉树高度的辅助函数
int height(TreeNode* node) {
if (node == NULL)
return 0;
else {
int left_height = height(node->left);
int right_height = height(node->right);
return (left_height > right_height ? left_height : right_height) + 1;
}
}
// 测量并打印二叉树的高度
int binaryTreeHeight(TreeNode* root) {
if (root == NULL)
return 0;
else
return height(root);
}
// 示例:创建一个简单的二叉树
TreeNode* createBinaryTree() {
// ... 创建和连接节点的代码 ...
return root;
}
int main() {
TreeNode* root = createBinaryTree();
int treeHeight = binaryTreeHeight(root);
printf("The height of the binary tree is: %d\n", treeHeight);
return 0;
}
```
阅读全文