来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/check-balance-lcci 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。
解答
平衡二叉树鉴定:
- 左右子树高度差不超过1
- 即左子树的最深高度与右子树的最深高度的高度差不超过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) {let isBalanced = true;function traverse (node) {if (!node) return 0;if (!node.left && !node.right) return 1;if (isBalanced) {let left = traverse(node.left);let right = traverse(node.right);if (Math.abs(left - right) > 1) {isBalanced = false;}return Math.max(left, right) + 1;}}traverse(root);return isBalanced;};
