C语言,平衡二叉树的判定
时间: 2023-06-09 14:08:28 浏览: 172
平衡二叉树的详细实现,C++语言,自己动手编程实现的
判断平衡二叉树的常用方法是通过计算左右子树的高度差,如果该差值小于等于1,则该树为平衡二叉树,否则不平衡。
平衡二叉树的定义是一棵空树或其任意节点的左右子树高度差的绝对值不超过1,并且左右子树也均为平衡二叉树。因此,对于一个节点,需要先判断其左右子树是否均为平衡二叉树,再判断其左右子树的高度差是否小于等于1。
代码实现如下:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
int getHeight(TreeNode* root) {
if (root == NULL) return 0;
int leftHeight = getHeight(root->left);
int rightHeight = getHeight(root->right);
return (leftHeight > rightHeight ? leftHeight:rightHeight) + 1;
}
bool isBalanced(TreeNode* root) {
if (root == NULL) return true;
int leftHeight = getHeight(root->left);
int rightHeight = getHeight(root->right);
if (abs(leftHeight - rightHeight) > 1) return false;
return isBalanced(root->left) && isBalanced(root->right);
}
```
其中,getHeight函数用于获取节点的高度,isBalanced函数用于判断平衡二叉树。
阅读全文