package class08;
/*
* 判断是否二叉树
* 左:平否
* 右:平否
* head:左高,右高相差1内
*
* Info:isBalancd;height
* */
public class IsBalanced {
public static class Node{
int value;
Node left;
Node right;
public Node(int value){
this.value=value;
}
}
//问题分析出来的信息
public static class Info{
boolean isBalanced;
int height;
public Info(boolean isBalanced,int height){
this.isBalanced=isBalanced;
this.height=height;
}
//对每个信息加工
public Info process(Node head){
if(head==null){
return new Info(true,0);
}
//得到左右变树的信息
Info leftInfo=process(head.left);
Info rightInfo=process(head.right);
//对head的信息加工
int height=Math.max(leftInfo.height,rightInfo.height)+1;
boolean isBalanced=true;
if(!leftInfo.isBalanced||!rightInfo.isBalanced||Math.abs(leftInfo.height- rightInfo.height)>2){
isBalanced=false;
}
return new Info(isBalanced,height);
}
}
}
二叉树套路2
最新推荐文章于 2025-05-18 21:08:26 发布