平衡二叉树
平衡二叉树
http://www.nowcoder.com/questionTerminal/8b3b95850edb4115918ecebdf1b4d222
简单的一道递归,很典型的题了,首先明白什么是平衡二叉树。
平衡树(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);
}
}
查看7道真题和解析