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

    这道题是判断树是否为BST。

    BST的定义如下:

    1) 左子树的所有节点的值小于父节点的值;

    2) 右子树的所有节点的值大于父节点的值。

    我们可以用中序遍历的方法得出一个数组,并判断数组是否是递增的。代码如下:

     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         
    13         List<Integer> res = new ArrayList<Integer>();
    14         
    15         if(root == null){
    16             return true;
    17         }
    18     
    19         helper(root, res);
    20 
    21         if(res.size() == 1){
    22             return true;
    23         }
    24         
    25         for(int i = 0 ; i < res.size() - 1 ; i++) {
    26             if( res.get(i) >= res.get(i+1) ){
    27                 return false;
    28             }
    29         }
    30         
    31         return true;
    32     }
    33     
    34     private void helper(TreeNode root, List<Integer> res){
    35         
    36         if( root == null) return ;
    37         helper(root.left, res);
    38         res.add(root.val);
    39         helper(root.right, res);
    40     }
    41 }

    END

  • 相关阅读:
    Three Algorithms for Fibonacci
    微软面试经历
    [TIP]命令行快速查看图片(Ubuntu)
    emacs as the c++ ide on the Ubuntu
    boost learn notes
    ReadingNotes@02122013
    ignoreunderline.org
    cnblogsminormode.org
    c++ 0x 新特性
    noip模拟赛 思考熊的马拉松
  • 原文地址:https://www.cnblogs.com/sssysukww/p/8757541.html
Copyright © 2011-2022 走看看