题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
public class Solution {
public static class ReturnData {
public boolean isBalanced;
public int height;
public ReturnData(boolean isBalanced, int height) {
this.isBalanced = isBalanced;
this.height = height;
}
}
public ReturnData process(TreeNode root) {
if (root == null) return new ReturnData(true,0);
ReturnData leftData = process(root.left);
ReturnData rightData = process(root.right);
if (!leftData.isBalanced || !rightData.isBalanced || Math.abs(leftData.height - rightData.height) > 1) {
return new ReturnData(false,0);
}
return new ReturnData(true, Math.max(leftData.height, rightData.height) + 1);
}
public boolean IsBalanced_Solution(TreeNode root) {
return process(root).isBalanced;
}
}