leetcode110.平衡二叉树

⭐️ 题目描述

leetcode110.平衡二叉树_第1张图片


leetcode链接:平衡二叉树

思路: 计算当前根节点的左右子树的深度,若左树和右树的高度相减的绝对值大于 1 1 1,则返回 false 。如果当前根节点满足则继续向下递归。本题涉及到求二叉树的高度(若不太理解,可以看我往期文章 ✨链接:【数据结构】详解二叉树(2))。

1️⃣ 代码:

// 计算当前根节点最大深度
int maxDepth(struct TreeNode* root){
    if (root == NULL) {
        return 0;
    }

    int leftDepth = maxDepth(root->left);
    int rightDepth = maxDepth(root->right);

    return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
}

bool isBalanced(struct TreeNode* root){
    if (root == NULL)
        return true;
    
    int leftTreeDepth = maxDepth(root->left);
    int rightTreeDepth = maxDepth(root->right);
    if (abs(leftTreeDepth - rightTreeDepth) > 1) {
        return false;
    }

    return isBalanced(root->left) && isBalanced(root->right);
}

你可能感兴趣的:(刷题,leetcode,学习,二叉树,刷题)