給定一個二叉樹,判斷其是不是一個有效的二叉搜索樹。網絡
假設一個二叉搜索樹具備以下特徵: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; }