public boolean isBalanced() {
return this.isBalanced(this.root).isBalanced;
}
private BalancedPair isBalanced(Node node) {
// write your code here
if(node==null){
BalancedPair bs = new BalancedPair();
bs.height=-1;
bs.isBalanced=true;
return bs;
}
BalancedPair lbp = isBalanced(node.left);
BalancedPair rbp = isBalanced(node.right);
BalancedPair mp = new BalancedPair();
mp.height = Math.max(lbp.height, rbp.height) + 1;
boolean lb = lbp.isBalanced;
boolean rb = rbp.isBalanced;
int h = Math.abs(lbp.height-rbp.height);
if(h<=1 && (lb && rb)){
mp.isBalanced=true;
}else{
mp.isBalanced= false;
}
return mp;
}