LeetCode | 110. 平衡二叉树

LeetCode | 110. 平衡二叉树

OJ链接

在这里插入图片描述

  • 首先计算出二叉树的高度
  • 然后计算当前节点的左右子树的高度,然后判断当前节点的左右子树高度差是否超过 1,最后递归地检查左右子树是否也是平衡的。
//计算二叉树的高度
int height(struct TreeNode* root)
{
    
    
    if(root == NULL)
        return NULL;
    int left = height(root->left);
    int right = height(root->right);
    return left > right ? left + 1 : right + 1;
}
//判断是否是平衡二叉树
bool isBalanced(struct TreeNode* root) {
    
    
    if(root == NULL)
        return true;
    
    //分别求左右子树的高度
    int left = height(root->left);
    int right = height(root->right);

    //判断当前节点是否平衡
    if(abs(left - right) > 1)
        return false;
    //递归检查左右子树是否平衡    
    return isBalanced(root->left)
        && isBalanced(root->right);
}

猜你喜欢

转载自blog.csdn.net/2201_76004325/article/details/134768176