思路:
从第二叉树的第二层开始判断,每两个节点一组,通过数组下标找到其父节点,根据规则对比

package NewCoder;

import java.util.Scanner;

public class IsBinarySearchTree {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String inputStr = sc.nextLine();
        if (inputStr.equals("None")) {
            System.out.println("True");
            return;
        }
        String[] inputs = inputStr.split(",");
        sc.close();
        int[] nums = new int[inputs.length];
        for (int i = 0; i < inputs.length; ++i) {
            nums[i] = Integer.parseInt(inputs[i]);
        }

        //当前层节点的数量,从第二层开始判断
        int currLayerNodeCount = 2;
        for (int i = 1; i < nums.length; ) {
            for (; i < (2 * currLayerNodeCount - 1); ) {
                //父节点下标
                int parentIndex = (int) (i / 2);
                //n 下标在当前层相对于根节点左右子树的分界线
                //n 的计算方法为 前面所有层节点之和 + 当前节点的一半
                // 即(currLayerNodeCount - 1)+ currLayerNodeCount / 2
                int n = currLayerNodeCount - 1 + currLayerNodeCount / 2;
                //出错条件
                // 左节点大于等于父节点 或者 右节点小于等于父节点
                if (nums[i] >= nums[parentIndex] || nums[i + 1] <= nums[parentIndex] ||
                        (currLayerNodeCount != 2 && //或者 当层数大于第二层时
                                //当前节点相对于根节点为左子树时  右节点大于等于根节点
                                ((i < n && nums[i + 1] >= nums[0])
                                        //当前节点相对于根节点为右子树时  左节点小于等于根节点
                                        || (i >= n && nums[i] <= nums[0])))) {
                    System.out.println("False");
                    return;
                }
                i += 2;
            }
            currLayerNodeCount *= 2;
        }
        System.out.println("True");
    }
}