题目
输入一棵二叉树,判断该二叉树是否是平衡二叉树。如果某二叉树中任意节点的左、右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
leetcode链接:https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof/
思路
什么是平衡二叉树?
- 可以是空树。
- 假如不是空树,任何一个结点的左子树与右子树都是平衡二叉树,并且高度之差的绝对值不超过 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) {
function order(node) {
if (!node) return 0
const leftHeight = order(node.left)
const rightHeight = order(node.right)
if (leftHeight === -1) return -1
if (rightHeight === -1) return -1
if (Math.abs(leftHeight - rightHeight) > 1) {
return -1
} else {
return 1 + Math.max(leftHeight, rightHeight)
}
}
return order(root) !== -1
}