LeetCode 插图:验证二叉搜索树
1。查询
给出二叉树的根节点root来判断二叉搜索树是否正确。 有效的二叉搜索树定义如下:
中的节点仅包含小于当前节点的数字。节点
的右子树仅包含比当前节点 大 的数字。
所有 左子树 和右子树也必须是单独的 二叉搜索树。 2。示例
2.1>示例1:
![]()
【输入】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]为例来看看某法庭流程。看下图:
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; * } * } */
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网