leetcode(js) 110. 平衡二叉树

  1. 平衡二叉树
    给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

示例 1:

给定二叉树 [3,9,20,null,null,15,7]

3

/
9 20
/
15 7
返回 true 。

示例 2:

给定二叉树 [1,2,2,3,3,null,null,4,4]

   1
  / \
 2   2
/ \

3 3
/
4 4
返回 false 。

解题思路:
需要在函数中递归一个能求高度的函数,
之后就可以根据左右子树的高度再递归一次
注意:最后一行不能直接return true ,因为跟节点左右子树高度保持平衡不代表下面的其他节点都是平衡的呀。

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isBalanced = function(root) {
     

    if(root==null)return true;

    function getHight(node){
     
        if(node==null)return 0;
        return Math.max(getHight(node.left),getHight(node.right))+1;
    }

    if(Math.abs(getHight(root.left)-getHight(root.right))>=2)return false;
    return isBalanced(root.left)&&isBalanced(root.right);
};

你可能感兴趣的:(JS训练,leetcode,javascript)