满二叉树:一个高度为h,并且含有2^h - 1个节点的二叉树称为满二叉树
public static boolean isFull1(Node head) {
if (head == null) {
return true;
}
Info1 all = process1(head);
//return (1 << all.height) - 1 == all.nodes;
return Math.pow(all.height, 2)== all.nodes;
}
public static class Info1 {
public int height;
public int nodes;
public Info1(int h, int n) {
height = h;
nodes = n;
}
}
public static Info1 process1(Node head) {
if (head == null) {
return new Info1(0, 0);
}
Info1 leftInfo = process1(head.left);
Info1 rightInfo = process1(head.right);
int height = Math.max(leftInfo.height, rightInfo.height) + 1;
int nodes = leftInfo.nodes + rightInfo.nodes + 1;
return new Info1(height, nodes);
}