题目:给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
**思路:**自顶向下,判断每个节点左右子节点的高度
/**
* 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) return true
// 将节点的左右子节点传入高度判断方法,得到高度差的绝对值。如果没有左右子节点返回false
return Math.abs(height(root.left)-height(root.right)) < 2 && isBalanced(root.left) && isBalanced(root.right)
};
// 节点高度判断方法,利用递归计算出传进来的节点的高度
function height(node) {
if(!node) {
return 0
}
// 取传入节点的最大高度
return 1+ Math.max(height(node.left),height(node.right))
}