110. 平衡二叉树

Posted jesseywang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了110. 平衡二叉树相关的知识,希望对你有一定的参考价值。

题目描述: 给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。
示例 1:
给定二叉树 [3,9,20,null,null,15,7],返回 true 。

  • 常规解法:DFS递归,分别计算每个结点的左右子树的高度,再计算差值
//C

int maxDepth(struct TreeNode* root);
bool isBalanced(struct TreeNode* root){
    if(root == NULL) return true;
    return abs(maxDepth(root -> left) - maxDepth(root -> right)) <= 1 &&
    isBalanced(root -> left) && isBalanced(root -> right);
}
int maxDepth(struct TreeNode* root){
    if(root == NULL) return 0;
    else if(root -> left == NULL && root -> right == NULL) return 1;
    else {
        int lheight = 0, rheight = 0;
        lheight = maxDepth(root -> left);
        rheight = maxDepth(root -> right);
        return lheight > rheight ? lheight + 1 : rheight + 1;
    }
    
}

//JS

let maxDepth = (node) => {
        if(!node) return 0;
        let leftDepth = maxDepth(node.left),
        rightDepth = maxDepth(node.right);
        return Math.max(leftDepth, rightDepth) + 1;
};
var isBalanced = function(root) {
    if(!root) return true;
    return Math.abs(maxDepth(root.left) - maxDepth(root.right)) <= 1 && 
    isBalanced(root.left) && isBalanced(root.right);
};

  

 

以上是关于110. 平衡二叉树的主要内容,如果未能解决你的问题,请参考以下文章

⭐算法入门⭐《二叉树 - 平衡二叉树》简单01 —— LeetCode 110. 平衡二叉树

LeetCode #110 平衡二叉树

代码随想录算法训练营第17天 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

110. 平衡二叉树

leetcode-----110. 平衡二叉树

LeetCode110. 平衡二叉树