c语言判断平衡二叉树
时间: 2023-12-30 14:22:36 浏览: 83
平衡二叉树的详细实现,C++语言,自己动手编程实现的
平衡二叉树是一种特殊的二叉搜索树,它的左右子树的高度差不超过1。以下是判断平衡二叉树的C语言代码实现:
```c
// 定义二叉树结点结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 计算树的高度
int height(TreeNode* root) {
if (root == NULL) {
return 0;
}
int leftHeight = height(root->left);
int rightHeight = height(root->right);
return leftHeight > rightHeight ? leftHeight + 1 : rightHeight + 1;
}
// 判断平衡二叉树
bool isBalanced(TreeNode* root) {
if (root == NULL) {
return true;
}
int leftHeight = height(root->left);
int rightHeight = height(root->right);
if (abs(leftHeight - rightHeight) > 1) {
return false;
}
return isBalanced(root->left) && isBalanced(root->right);
}
```
以上代码中,`height`函数用于计算树的高度,`isBalanced`函数用于判断平衡二叉树。在`isBalanced`函数中,首先判断当前节点的左右子树高度差是否超过1,如果超过1则返回false,否则递归判断左右子树是否为平衡二叉树。
阅读全文