c语言 判断是否为平衡二叉树
时间: 2025-01-08 14:47:09 浏览: 4
### 如何用 C 语言实现判断一棵二叉树是否为平衡二叉树
为了判断一棵二叉树是否为平衡二叉树,可以采用递归的方式计算每个节点的高度差。如果任意节点的左右子树高度差超过1,则该树不是平衡二叉树。
#### 定义数据结构
首先定义二叉树的数据结构:
```c
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
```
#### 计算树高函数
创建一个辅助函数用于获取树的最大深度:
```c
int getHeight(TreeNode* node) {
if (node == NULL) return 0;
int leftHeight = getHeight(node->left);
if (leftHeight == -1) return -1; // 左子树已经不平衡
int rightHeight = getHeight(node->right);
if (rightHeight == -1) return -1; // 右子树已经不平衡
if (abs(leftHeight - rightHeight) > 1) return -1; // 当前节点不平衡
return fmax(leftHeight, rightHeight) + 1;
}
```
此部分逻辑确保一旦发现任何子树失去平衡立即返回错误信号`-1`[^1]。
#### 主判断函数
基于上述方法构建最终接口函数:
```c
bool isBalanced(TreeNode* root){
return getHeight(root) != -1;
}
```
这段代码简洁明了地实现了对整棵树自底向上遍历检查的工作流程[^2]。
阅读全文