力扣平衡二叉树c语言
时间: 2023-10-28 10:07:02 浏览: 135
力扣平衡二叉树C语言解法如下:
```c
// 求二叉树的最大深度(高度)
int maxDepth(struct TreeNode* root) {
if (root == NULL) {
return 0;
}
int leftHeight = maxDepth(root->left);
int rightHeight = maxDepth(root->right);
return leftHeight > rightHeight ? leftHeight + 1 : rightHeight + 1;
}
// 判断二叉树是否是平衡二叉树
bool isBalanced(struct TreeNode* root) {
if (root == NULL) {
return true;
}
int leftHeight = maxDepth(root->left);
int rightHeight = maxDepth(root->right);
if (abs(leftHeight - rightHeight) > 1) {
return false;
}
return isBalanced(root->left) && isBalanced(root->right);
}
```
以上是使用C语言解决力扣平衡二叉树问题的代码。其中,`maxDepth`函数用于求二叉树的最大深度(高度),`isBalanced`函数用于判断二叉树是否是平衡二叉树。主要思路是递归地判断每个节点的左右子树是否平衡,通过比较左右子树的高度差判断是否平衡。
阅读全文