110. 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/balanced-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
private Helper solve(TreeNode root) {
if (root == null) {
return new Helper(true, 0);
}
Helper left = solve(root.left);
Helper right = solve(root.right);
return new Helper(left.isBalanced && right.isBalanced && Math.abs(left.height - right.height) <= 1,
Math.max(left.height, right.height) + 1);
}
public boolean isBalanced(TreeNode root) {
if (root == null) {
return true;
}
return solve(root).isBalanced;
}
}
class Helper {
boolean isBalanced;
int height;
public Helper(boolean isBalanced, int height) {
this.isBalanced = isBalanced;
this.height = height;
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {
}
TreeNode(int val) {
this.val = val;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
心之所向,素履以往 生如逆旅,一苇以航