public static boolean isBSTTwo(BinaryTreeNode root) {
		
		if (root == null) {
			return true;
		}
		
		if (root.leftChild != null) {

			int leftMinValue = BinaryTreeMin.minValueRecursive(root.leftChild);

			if (root.data < leftMinValue) {
				return false;
			}
		}
		
		if (root.rightChild != null) {
			
			int rightMaxValue = BinaryTreeMax.maxValueRecursive(root.rightChild);
			
			if (root.data >= rightMaxValue) {
				return false;
			}
		}
		
		return isBSTTwo(root.leftChild) && isBSTTwo(root.rightChild);
		
	}