leetcode hot 100- 98. 驗證二叉搜尋樹
阿新 • • 發佈:2021-02-09
98. 驗證二叉搜尋樹
題目描述:
給定一個二叉樹,判斷其是否是一個有效的二叉搜尋樹。
假設一個二叉搜尋樹具有如下特徵:
- 節點的左子樹只包含小於當前節點的數。
- 節點的右子樹只包含大於當前節點的數。
- 所有左子樹和右子樹自身必須也是二叉搜尋樹。
示例1:
示例2:
思路:
二叉搜尋樹的中序遍歷是遞增序列,所以只需要使用中序遍歷方式遍歷二叉樹,判斷當前結點是否大於上一個結點,如果不符合直接返回false 注意:preVal必須使用Long型別,因為擔心某個結點的值剛好等於Integer.MIN_VALUEleetcode 執行用時:0 ms > 100.00%, 記憶體消耗:38.3 MB > 80.46%1 class Solution { 2 public long preVal = Long.MIN_VALUE; // 使用Long型別是擔心某個結點的值剛好等於Integer.MIN_VALUE 3 public boolean isValidBST(TreeNode root) { 4 if(root == null){ 5 return true; 6 } 7 8 if(!isValidBST(root.left)){ // 判斷左子樹是否是二叉搜尋樹 9 return false; 10 } 11 if(root.val <= preVal){ 12 return false; 13 } 14 preVal = root.val; 15 return isValidBST(root.right); 16 } 17 }