題目描述:html
給定一個二叉樹,判斷其是不是一個有效的二叉搜索樹。java
假設一個二叉搜索樹具備以下特徵:node
節點的左子樹只包含小於當前節點的數。
節點的右子樹只包含大於當前節點的數。
全部左子樹和右子樹自身必須也是二叉搜索樹。spa
示例 1: 輸入: 2 / \ 1 3 輸出: true 示例 2: 輸入: 5 / \ 1 4 / \ 3 6 輸出: false 解釋: 輸入爲: [5,1,4,null,null,3,6]。 根節點的值爲 5 ,可是其右子節點值爲 4 。
思路分析:遞歸htm
由於二叉搜索樹中序遍歷是遞增的,因此咱們能夠中序遍歷判斷前一數是否小於後一個數.blog
代碼實現:遞歸
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { TreeNode preNode=null; public boolean isValidBST(TreeNode root) { if (root == null) { return true; } if (!isValidBST(root.left)) { return false; } if (preNode != null && preNode.val >= root.val) { return false; } preNode = root; return isValidBST(root.right); } }