简单的一道递归,很典型的题了,首先明白什么是平衡二叉树。
平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1。
那么对于节点 X 其左右子树是平衡二叉树且高度小于等于 1 即可
public class Solution { public boolean IsBalanced_Solution(TreeNode root) { return process(root).isBalanced; } class Info{ boolean isBalanced; int length; Info(boolean b,int l){ this.isBalanced=b; this.length=l; } } public Info process(TreeNode x){ if(x==null){ return new Info(true,0); } Info leftInfo=process(x.left); Info rightInfo=process(x.right); boolean isBalanced=leftInfo.isBalanced&&rightInfo.isBalanced&&(Math.abs(leftInfo.length-rightInfo.length)<=1); int length=Math.max(leftInfo.length,rightInfo.length)+1; return new Info(isBalanced,length); } }