解题思路:
1.首先写一个返回深度的函数d
2.写一个遍历函数t
3.在t中首先判断,r是否为空(为空则此时就是平衡二叉树,返回true),然后判断是否为叶子节点(r.left ===null && r.right === null)若是则返回true,最后判断,其左子树的深度与右子树的深度之差是否大于1.若是则返回false
4.到了这里,则对r的左右子树分别调用t,返回其左右子树的与(&&)关系
/*** 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) {function d(r){if(!r) return 0if(r.left === null && r.right === null) return 1return Math.max(d(r.left),d(r.right)) +1} function t(r){if(!r) return trueif(r.left === null && r.right === null) return trueif(d(r.left) - d(r.right) > 1 || d(r.right) - d(r.left) >1 ) return falsereturn t(r.left) && t(r.right)}return t(root)
};