给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

    有效 二叉搜索树定义如下:

    节点的左子树只包含 小于 当前节点的数。
    节点的右子树只包含 大于 当前节点的数。
    所有左子树和右子树自身必须也是二叉搜索树。

    分析:这道题一开始的想法是比较每个节点的左右子树,看是否满足二叉搜索树的条件,但是结果是错了,因为右子树的左子树有可能比这个节点要大,但是这种方法无法判别出来。
    看到二叉搜索树的题,第一时间要想到中序遍历,通过中序遍历,可以制造出一个递增的链表!!!

    参考代码:
    public boolean isValidBST(TreeNode root) {
    sup(root);
    int pre=path.get(0);
    for(int i=1;i int tmp=path.get(i);
    if(tmp<=pre) return false;
    pre=tmp;
    }
    return true;
    }
    LinkedList path = new LinkedList<>();
    private void sup(TreeNode node){
    if(node==null) return;
    sup(node.left);
    path.add(node.val);
    sup(node.right);
    }