【算法学习】平衡二叉树判断

208 阅读1分钟

题目:给定一个二叉树,判断它是否是高度平衡的二叉树。

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

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过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))
}