[leetcode]110. Balanced Binary Tree@Java解题报告

来源:互联网 发布:java两个数组相加 编辑:程序博客网 时间:2024/05/21 08:57

https://leetcode.com/problems/balanced-binary-tree/description/


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.


package go.jacob.day807;public class Demo4 {public boolean isBalanced(TreeNode root) {if (root == null)return true;return getHeight(root) != -1;}/* * 高度差如果大于1,返回-1 */private int getHeight(TreeNode root) {if (root == null)return 0;int left = getHeight(root.left);if (left == -1)return -1;int right = getHeight(root.right);if (right == -1)return -1;if (left - right > 1 || right - left > 1)return -1;return 1 + Math.max(left, right);}/* * 错误解法:不能只判断根节点的左右子树是否高度差小于1, 要判断任意节点的左右高度差 */public boolean isBalanced_1(TreeNode root) {return root == null || Math.abs(height(root.left) - height(root.right)) <= 1 ? true : false;}private int height(TreeNode root) {if (root == null)return 0;return 1 + Math.max(height(root.left), height(root.right));}}