// 信息结构
public static class Info{
public int nodes;
public int height;
public Info(int nodes, int height) {
this.nodes = nodes;
this.height = height;
}
}
// 判断
public static Boolean isFullMain(Node head){
if(head == null){
return null;
}
Info info = isFull(head);
return Math.pow(2, info.height)-1 == info.nodes;
}
public static Info isFull(Node head){
if(head == null){
return new Info(0, 0);
}
// 左树要信息 右树要信息
Info leftReturn = isFull(head.left);
Info rightReturn = isFull(head.right);
// 自己也要弄信息
int nodes = 0;
int height = 0;
// 自己也算一个 一层
nodes = leftReturn.nodes + rightReturn.nodes + 1;
height = Math.max(leftReturn.height , rightReturn.height)+1;
return new Info(nodes,height);
}