【 验证二叉搜索树】

简介: 【 验证二叉搜索树】

正文


简介【 验证二叉搜索树】【利用二叉搜索树的性质,中序遍历它是逐渐递增的结果,验证我们的二叉搜索树】


题目描述#


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

假设一个二叉搜索树具有如下特征:

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


输入:
    2
   / \
  1   3
输出: true


示例 2:


输入:
    5
   / \
  1   4
     / \
    3   6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。
     根节点的值为 5 ,但是其右子节点值为 4 。


我的代码#


/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
import java.util.Stack;
class Solution {
    Stack<Integer> stack = new Stack<>();
    public boolean isValidBST(TreeNode root) {
        try {
            isValid(root);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
    private void isValid(TreeNode root) throws Exception {
        if (root != null) {
            isValid(root.left);
            if (stack.isEmpty()) {
                stack.push(root.val);
            } else {
                Integer pop = stack.pop();
                if (pop >= root.val) {
                    throw new Exception("111");
                }
                stack.push(root.val);
            }
            isValid(root.right);
        }
    }
}


性质以及复杂度#


利用二叉搜索树的中序遍历是一个递增的序列
时间复杂度:o(N)
空间复杂度:o(N)


相关文章
|
11月前
leetcode255. 验证前序遍历序列二叉搜索树
leetcode255. 验证前序遍历序列二叉搜索树
39 0
|
12月前
代码随想录Day17 LeetCode T98 验证二叉搜索树 T530 二叉搜索树的最小绝对差 T501 二叉搜索树中的众数 T236二叉搜索树的最近公共祖先
代码随想录Day17 LeetCode T98 验证二叉搜索树 T530 二叉搜索树的最小绝对差 T501 二叉搜索树中的众数 T236二叉搜索树的最近公共祖先
51 0
25_验证二叉搜索树
25_验证二叉搜索树
|
2月前
|
运维 自然语言处理 监控
快速验证环
快速验证环
25 0
|
5月前
|
算法 前端开发
331. 验证二叉树的前序序列化
331. 验证二叉树的前序序列化
38 0
|
5月前
|
C++ Python
leetcode-98:验证二叉搜索树
leetcode-98:验证二叉搜索树
49 1
|
5月前
|
存储 算法 程序员
【算法训练-二叉树 七】【二叉搜索树】验证二叉搜索树、将二叉搜索树转为排序的双向循环链表
【算法训练-二叉树 七】【二叉搜索树】验证二叉搜索树、将二叉搜索树转为排序的双向循环链表
57 0
|
11月前
|
算法 C++
C++递归实现验证⼆叉搜索树
C++递归实现验证⼆叉搜索树
图解LeetCode——98. 验证二叉搜索树
图解LeetCode——98. 验证二叉搜索树
11912 3
图解LeetCode——98. 验证二叉搜索树
算法训练Day22|235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点
算法训练Day22|235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点