LeetCode98. Validate Binary Search Tree -判断是否为二叉排序树

Posted walkersteve

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode98. Validate Binary Search Tree -判断是否为二叉排序树相关的知识,希望对你有一定的参考价值。

一、描述:

二、思路:

二叉排序树(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、递归:明天再写

以上是关于LeetCode98. Validate Binary Search Tree -判断是否为二叉排序树的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 98. Validate Binary Search Tree

leetcode 98 - Validate Binary Search Tree

Leetcode 98. Validate Binary Search Tree

leetcode [98]Validate Binary Search Tree

LeetCode 98. Validate Binary Search Tree

[LeetCode_98]Validate Binary Search Tree