Test case 1 is wrong what is problem in my code

import java.util.*;
public class Main3 {

static Scanner scn = new Scanner(System.in);

public static void main(String[] args) {
	Main3 m = new Main3();
	BinaryTree bt = m.new BinaryTree();
	System.out.println(bt.isBalanced());
}

private class BinaryTree {
	private class Node {
		int data;
		Node left;
		Node right;
	}

	private Node root;
	private int size;

	public BinaryTree() {
		this.root = this.takeInput(null, false);
	}

	public Node takeInput(Node parent, boolean ilc) {

		int cdata = scn.nextInt();
		Node child = new Node();
		child.data = cdata;
		this.size++;

		// left
		boolean hlc = scn.nextBoolean();

		if (hlc) {
			child.left = this.takeInput(child, true);
		}

		// right
		boolean hrc = scn.nextBoolean();

		if (hrc) {
			child.right = this.takeInput(child, false);
		}

		// return
		return child;
	}

	public boolean isBalanced() {
		return this.isBalanced(this.root).isBalanced;
	}

	private BalancedPair isBalanced(Node node) {
		 if(node==null){
            BalancedPair p=new BalancedPair();
            p.height=-1;
            p.isBalanced=true;
            return p;
        }
         BalancedPair pair1;
         BalancedPair pair2;
	pair1=isBalanced(node.left);
        pair2=isBalanced(node.right);
        BalancedPair pair=new BalancedPair();
        pair.height=pair1.height+pair2.height;
        if(pair1.height<=1 && pair2.height<=1) {
        	pair.isBalanced=true;
        }else {
        	pair.isBalanced=false;
        }
        return pair;
	}

	private class BalancedPair {
		int height;
		boolean isBalanced;
	}

}

}

@sksumitkumardiwaker,

https://ide.codingblocks.com/s/231453 corrected code. Take the max between both the heights and add 1 to it.