[LeetCode]98. 驗證二叉搜索樹

題目

給定一個二叉樹,判斷其是不是一個有效的二叉搜索樹。網絡

假設一個二叉搜索樹具備以下特徵:code

節點的左子樹只包含小於當前節點的數。
節點的右子樹只包含大於當前節點的數。
全部左子樹和右子樹自身必須也是二叉搜索樹。leetcode

來源:力扣(LeetCode)
連接:https://leetcode-cn.com/problems/validate-binary-search-tree
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。get

題解

由題,中序遍歷是嚴格的遞增,則是BST。
不須要將中序遍歷結果存儲,只需在中序遍歷過程當中比較序列臨近兩元素便可。class

代碼

public static boolean isValidBST(TreeNode root) {
        Stack<TreeNode> stack = new Stack<>();
        TreeNode curNode = root;
        long maxVal = Long.MIN_VALUE;
        while (curNode != null || !stack.isEmpty()) {//
            while (curNode != null) {
                stack.push(curNode);
                curNode = curNode.left;
            }
            curNode = stack.pop();
            if (curNode.val > maxVal) {
                maxVal = curNode.val;
                curNode = curNode.right;//
            } else {
                return false;
            }
        }
        return true;
    }
相關文章
相關標籤/搜索