Code前端首页关于Code前端联系我们

LeetCode 插图:验证二叉搜索树

terry 2年前 (2023-09-27) 阅读数 117 #数据结构与算法

1。查询

给出二叉树的根节点root来判断二叉搜索树是否正确。 有效的二叉搜索树定义如下:

中的节点仅包含小于当前节点的数字。节点
的右子树仅包含比当前节点
的数字。
所有 左子树 和右子树也必须是单独的 二叉搜索树

2。示例

2.1>示例1:

图解LeetCode:验证二叉搜索树

输入】root = [2,1,3]
【♷♷♸ ? [描述]根节点的值为5,但右子节点的值为4。

提示:树中节点数的范围

  • [1, 10^4]
  • -2^31 左♷♷右节点 [♷♷ 】-序遍历】leftNode——>节点——>♷♾后序遍历】左节点 — — >rightNode——>node

    所以遍历顺序是先,然后是左节点。节点;那么如果这棵二叉树是二叉搜索树,那么所传递的每个节点最后一组值的结果就是的升序。因此,对于这个特性,首先我们可以创建一个变量val来存储之前传递的节点的值,然后每个节点node都被传递,.val > val不满足,说明不是树二分查找。

    以上就是这个问题的解答。为了方便大家理解,我们以输入 root = [5,1,4,null,null,3,6]为例来看看某法庭流程。看下图:图解LeetCode:验证二叉搜索树

    IV。代码实现

    class Solution {
        public long val = Long.MIN_VALUE;
        public boolean isValidBST(TreeNode root) {
            if (root == null) return true;
            if (!isValidBST(root.left)) return false;
            if (val >= root.val) return false;
            val = root.val;
            return isValidBST(root.right);
        }
    }
    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode() {}
     *     TreeNode(int val) { this.val = val; }
     *     TreeNode(int val, TreeNode left, Tre eNode right) {
     *         this.val = val;
     *         this.left = left;
     *         this.right = right;
     *     }
     * }
     */
    图解LeetCode:验证二叉搜索树

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门