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:

        2
       / 
      1   3
    

    Binary tree [2,1,3], return true.

    Example 2:

        1
       / 
      2   3
    

    Binary tree [1,2,3], return false.

    本题采用的方法是迭代的先序遍历检验法,因为起点变成了从最左节点开始,所以可以当作没有左节点,只要比较其父节点和父节点的右子树节点大小即可,stack用来存储其父节点。代码如下:

     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 public class Solution {
    11     public boolean isValidBST(TreeNode root) {
    12         TreeNode node = root;
    13         Stack<TreeNode> stack = new Stack<TreeNode>();
    14         TreeNode pre = null;
    15         while(node!=null||!stack.isEmpty()){
    16             while(node!=null){
    17                 stack.push(node);
    18                 node = node.left;
    19             }
    20             node = stack.pop();
    21             if(pre!=null&&pre.val>=node.val) return false;
    22             pre = node;
    23             node = node.right;
    24         }
    25         return true;
    26     }
    27 }
  • 相关阅读:
    dpdk优化相关 转
    常用的TCP Option
    c10k C10M
    Linux惊群效应详解
    bloomfilter 以及count min sketch
    Squid 搭建正向代理服务器
    Openflow的架构+源码剖析 转载
    Hyperscan与Snort的集成方案
    动态图
    psutil 模块
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6603771.html
Copyright © 2011-2022 走看看