码迷,mamicode.com
首页 > 编程语言 > 详细

【LeetCode】98. Validate Binary Search Tree -判断是否为二叉排序树

时间:2017-03-29 01:04:19      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:arraylist   size   非递归   ret   alt   list   定义   traversal   blog   

一、描述:

技术分享

二、思路:

二叉排序树(BST),中序遍历的结果一定是非递减序列(来自百度百科);

本题中对于BST的定义是要么大于,要么小与,即遍历结果只能是递增序列,故可以通过判断中序遍历的结果序列是否是递增序列,来判断是否为合法BST;

另一种方法是使用递归;

三、代码:

1、非递归,通过中序遍历结果判断:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    private List<Integer> list = new ArrayList<Integer>();
    public boolean isValidBST(TreeNode root) {
        inorderTraversal(root);
        int size = list.size();
        if(size==0 || size==1){
            return true;
        }
        for(int i=0;i<size-1;i++){
            if((list.get(i)) >= (list.get(i+1))){
                return false;
            }
        }
        return true;
    }
    
    //中序遍历
    public void inorderTraversal(TreeNode root){
        if(root==null){
            return;
        }else{
            inorderTraversal(root.left);
            list.add(root.val);
            inorderTraversal(root.right);
        }
    }
}

2、递归:明天再写

【LeetCode】98. Validate Binary Search Tree -判断是否为二叉排序树

标签:arraylist   size   非递归   ret   alt   list   定义   traversal   blog   

原文地址:http://www.cnblogs.com/WalkerSteve/p/6637673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!