zoukankan      html  css  js  c++  java
  • 98. Validate Binary Search Tree

    Given a binary tree, determine if it is a valid binary search tree (BST).

    Assume a BST is defined as follows:

    • The left subtree of a node contains only nodes with keys less than the node's key.
    • The right subtree of a node contains only nodes with keys greater than the node's key.
    • Both the left and right subtrees must also be binary search trees.

    Example 1:

    Input:
        2
       / 
      1   3
    Output: true
    

    Example 2:

        5
       / 
      1   4
         / 
        3   6
    Output: false
    Explanation: The input is: [5,1,4,null,null,3,6]. The root node's value
                 is 5 but its right child's value is 4.


    验证一棵树是否为二叉搜索树

    java:
     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 class Solution {
    11     public boolean isValidBST(TreeNode root) {
    12         if (root == null)
    13             return true ;
    14         Stack<TreeNode> stack = new Stack<TreeNode>() ;
    15         TreeNode cur = root ;
    16         TreeNode pre = null ;
    17         boolean flag = true ;
    18         while(cur != null || !stack.isEmpty()){
    19             while(cur != null){
    20                 stack.push(cur) ;
    21                 cur = cur.left ;
    22             }
    23             TreeNode node = stack.pop() ;
    24             if (pre != null && node.val <= pre.val){
    25                 flag = false ;
    26                 break ;
    27             }
    28             pre = node ;
    29             cur = node.right ;
    30         }
    31         return flag ;
    32     }
    33 }
     
  • 相关阅读:
    开发中遇到的问题点
    ThreadLocal
    Java多线程10:join()方法
    Java多线程9:中断机制
    Java多线程8:wait()和notify()/notifyAll()
    Java多线程7:死锁
    Java多线程0:核心理论
    MySQL中and和or的优先级的问题
    Java多线程6:Synchronized锁代码块(this和任意对象)
    shiro英语
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/10630963.html
Copyright © 2011-2022 走看看