题目
Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
方法
分别计算左右子树的高度,看看是否满足平衡的要求。如果不满足:返回false;如果满足:接着递归判断左右子树是否满足。上述重复计算的次数比较多,但是通过了。
PS:可以使用全局变量,进行后序遍历。int depth(TreeNode node) { if (node == null) { return 0; } int left = depth(node.left); int right = depth(node.right); return left > right ? left + 1: right + 1; } public boolean isBalanced(TreeNode root) { if (root == null) { return true; } int left = depth(root.left); int right = depth(root.right); int dif = Math.abs(right - left); if (dif > 1) { return false; } else { return isBalanced(root.left) && isBalanced(root.right); } }