首页 > 编程语言 > 详细

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

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

一、描述:

技术分享

二、思路:

二叉排序树(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 -判断是否为二叉排序树

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!