zoukankan      html  css  js  c++  java
  • 98. 验证二叉搜索树

    给定一个二叉树,判断其是否是一个有效的二叉搜索树。

    假设一个二叉搜索树具有如下特征:

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

    输入:
    2
    /
    1 3
    输出: true
    示例 2:

    输入:
    5
    /
    1 4
      /
      3 6
    输出: false
    解释: 输入为: [5,1,4,null,null,3,6]。
      根节点的值为 5 ,但是其右子节点值为 4 。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/validate-binary-search-tree
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    只需要检查中序遍历的序列是否有序即可,有序返回true,无序返回false;

     1 public class Solution {
     2     private Integer pre = null;
     3     private boolean helper(TreeNode root) {
     4         if (root != null) {
     5             if (!helper(root.left)) return false;
     6             if (pre != null && pre >= root.val)
     7                 return false;
     8             pre = root.val;
     9             if (!helper(root.right)) return false;
    10         }
    11         return true;
    12     }
    13 
    14     public boolean isValidBST(TreeNode root) {
    15         return helper(root);
    16     }
    17 
    18     public static void main(String[] args) {
    19         //5,1,4,null,null,3,6
    20         //5,3,7,1,4,6,8
    21         //5,3,7,1,6,6,8
    22         TreeNode root = _94.create(new Object[]{5,3,7,1,6,6,8});
    23         boolean validBST = new Solution().isValidBST(root);
    24         System.out.println("validBST = " + validBST);
    25     }
    26 }
  • 相关阅读:
    ES6 Symbol类型 附带:Proxy和Set
    why updating the Real DOM is slow, what is Virtaul DOM, and how updating Virtual DOM increase the performance?
    React高级指南
    池(Pool)
    计算机网络Intro
    React基础
    CommonJS 与 ES6 的依赖操作方法(require、import)
    webpack初识(biaoyansu)
    关于时间安排贪心算法正确性的证明
    DP总结
  • 原文地址:https://www.cnblogs.com/yfs123456/p/11611356.html
Copyright © 2011-2022 走看看