public static class Node {
public int value;
public Node left;
public Node right;
public Node(int data) {
this.value = data;
}
}
public static boolean isFull(Node head){
ReturnData allInfo=process(head, 1);
return ((1<<allInfo.level)-1==allINfo.nums;
}
public static class ReturnData{
public int level;
public int nums;
public ReturnData(int l, int n){
level=l;
nums=n;
}
}
public static ReturnData process(Node head, int level){
if(head==null){
return new ReturnData(level, 0);
}
ReturnData leftInfo = process(head.left, level+1);
ReturnData rightInfo = process(head.right, level+1);
int nums = leftInfo.nums + rightInfo.nums+1;
int deep = Math.max(leftInfo.level,rightInfo.level);
return new ReturnData(deep, nums);
}
public static class ReturnType {
public boolean isBalanced;
public int height;
public ReturnType(boolean isB, int hei) {
isBalanced = isB;
height = hei;
}
}