验证二叉搜索树

作者: 第四单元 | 来源:发表于2018-04-08 10:57 被阅读14次

题目

给定一个二叉树,判断其是否是一个有效的二叉搜索树。

一个二叉搜索树有如下定义:

左子树只包含小于当前节点的数。
右子树只包含大于当前节点的数。
所有子树自身必须也是二叉搜索树。

思路

错误的思路:递归一遍,判断每个节点是否大于其左孩子并小于其右孩子。这样是错误的,因为定义中说的是小于、大于子树的所有结点,而不只是直接孩子结点。这样判断不能保证正确。
正确的思路:由二叉搜索树的特点可知,其中序遍历序列一定是一个升序序列,反之中序为升序的二叉树也一定是二叉搜索树。所以求出其中序序列再判断是否为升序就行了。

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    private static List<Integer> list = new ArrayList<Integer>();
    public boolean isValidBST(TreeNode root) {
        if(!list.isEmpty())
            list.clear();
        dfs(root);
        boolean ans = true;
        int len = list.size();
        for(int i = 1; i < len; i++) {
            if(list.get(i) <= list.get(i-1)) {
                ans = false;
                break;
            }
        }
        return ans;
    }

    private void dfs(TreeNode root) {
        if(root == null) return;

        dfs(root.left);
        list.add(root.val);
        dfs(root.right);
    }
}

相关文章

  • Swift 验证二叉搜索树- LeetCode

    题目: 验证二叉搜索树 验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有...

  • LeetCode-98-验证二叉搜索树

    LeetCode-98-验证二叉搜索树 98. 验证二叉搜索树[https://leetcode-cn.com/p...

  • [LeetCode OJ]- Valid Binary Sea

    题目要求:验证一个树是否为二叉搜索树。 二叉搜索树:(BST,二叉排序树,二叉查找树)。 一颗二叉检索树或者为空树...

  • [Leetcode] 98. 验证二叉搜索树

    98. 验证二叉搜索树 来源: 98. 验证二叉搜索树 1. 题目描述 给定一个二叉树,判断其是否是一个有效的二...

  • LeetCode 98. 验证二叉搜索树

    98. 验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点...

  • LeetCode 验证二叉搜索树

    98、验证二叉搜索树参考给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点...

  • 2019 算法面试相关(leetcode)--树、二叉树、二叉搜

    翻转二叉树二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历验证二叉搜索树二叉树的最近公共祖先二叉搜索树的最近公共祖...

  • 【算法】验证二叉搜索树

    验证二叉搜索树 描述 给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子...

  • LeetCode:是否是合法的二叉搜索树

    98. 验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左...

  • LeetCode-098-验证二叉搜索树

    验证二叉搜索树 题目描述:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的...

网友评论

    本文标题:验证二叉搜索树

    本文链接:https://www.haomeiwen.com/subject/ftjphftx.html