Untitled
unknown
plain_text
3 years ago
1.1 kB
8
Indexable
public boolean isPerfect(){
int treeHeight = getHeight(root);
return isPerfect(root, 0, treeHeight);
}
private boolean isPerfect(Node node, int level, int treeHeight){
if(node == null) return true;
if(node.leftChild == null && node.rightChild == null){
return level == treeHeight -1;
}
if(node.leftChild == null || node.rightChild == null) return false;
return isPerfect(node.leftChild, level + 1, treeHeight) && isPerfect(node.rightChild, level + 1, treeHeight);
}
public boolean isFull(){
return isFull(root);
}
private boolean isFull(Node node){
if(node == null) return true;
if((node.leftChild == null && node.rightChild != null) || (node.leftChild != null && node.rightChild == null)) return false;
return isFull(node.leftChild) && isFull(node.rightChild);
}
private int getHeight(Node node){
if(node == null) return 0;
int leftHeight = getHeight(node.leftChild);
int rightHeight = getHeight(node.rightChild);
return Math.max(leftHeight, rightHeight) + 1;
}Editor is loading...