解法一:我们要什么信息,要完成递归条件的收集,把要的信息都搞到Info里头
第一个信息是高度,我们能用高度来判断是否平衡
第二个信息是是否平衡
开始递归完成信息采集,只有得到左右节点的信息才能判断该节点的信息
递归的base case是节点为null了,空节点当然是平衡的而且高度是0我们把这个信息留存
然后我们收集左节点信息
收集右节点信息
收集到的信息里面有高度这一属性
父节点的高度属性依赖于子节点高度们
如果左数不平衡 或者 右数不平衡 或者 左右高度相差超过了1,那该节点为头节点的树就是不平衡的,把信息收集好返回上一层
class Solution {
public static class Info{
public boolean isbalence;
public int height;
public Info(boolean b,int h){
isbalence=b;
height=h;
}
}
public boolean isBalanced(TreeNode root) {
return process(root).isbalence;
}
public static Info process(TreeNode root){
if(root==null){
ret