判断平衡二叉树代码c语言
时间: 2024-09-18 18:10:04 浏览: 61
判断一个二叉树是否为平衡二叉树的算法通常是通过递归的方式实现的。在 C 语言中,你可以创建一个辅助函数来检查当前节点以及其左右子树的高度差是否小于等于 1,如果满足这个条件并且左右子树都是平衡的,那么整个二叉树就是平衡的。
以下是一个简单的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 检查高度差
int heightDiff(TreeNode* node) {
if (node == NULL)
return 0;
int leftHeight = heightDiff(node->left);
int rightHeight = heightDiff(node->right);
// 如果左、右高度差大于 1,则不平衡
if (abs(leftHeight - rightHeight) > 1)
return INT_MAX; // 返回一个足够大的值表示不平衡
return 1 + ((leftHeight > rightHeight) ? leftHeight : rightHeight);
}
// 判断是否平衡
int isBalanced(TreeNode* root) {
if (root == NULL)
return 1; // 空树是平衡的
int height = heightDiff(root);
return height == 0; // 如果高度差是 0,说明树是平衡的
}
// 主函数测试
int main() {
// 你的实际二叉树构造代码...
TreeNode* root = ...;
if (isBalanced(root))
printf("The tree is balanced.\n");
else
printf("The tree is not balanced.\n");
return 0;
}
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)