当前位置: 首页 > 后端技术 > Java

LeetCode-098-VerifyBinarySearchTree

时间:2023-04-01 14:53:31 Java

VerifyBinarySearchTree题目描述:给定一棵二叉树,判断它是否是有效的二叉搜索树。假设一棵二叉搜索树具有以下特点:节点的左子树只包含小于当前节点的数字。节点的右子树仅包含大于当前节点的数字。所有的左子树和右子树本身必须是二叉搜索树。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:递归法根据二叉搜索树的性质,当前节点左子树的上边界(不包含)和右子树的下边界(不包含)为当前节点的值结点,所以可以用递归的方法来求解,递归的过程如下:根节点没有父节点,所以第一次调用递归的方法使用最大值和最小值作为上下边界;如果当前节点为null,则表示它是叶节点,直接返回true;如果当前节点的值不在上下边界范围内,则返回false;递归判断当前节点的左右节点是否在对应的上线边界范围内。导入com.kaesar.leetcode.TreeNode;publicclassLeetCode_098{/***递归方法**@paramroot*@return*/publicstaticbooleanisValidBST(TreeNoderoot){returnisValidBST(root,Long.MIN_VALUE,Long.MAX_VALUE);}/***递归方法**@paramnode当前节点*@param当前节点low下边界(不包含)*@param当前节点high上边界(不包含)*@return*/privatestaticbooleanisValidBST(TreeNodenode,longlow,longhigh){//如果node为null,表示是叶子节点,直接返回trueif(node==null){returntrue;}//如果当前节点的值不在上下边界内,则返回falseif(node.val<=low||node.val>=high){returnfalse;}//递归判断当前节点的左右节点是否在对应的上线边界内returnisValidBST(node.left,low,node.val)&&isValidBST(node.right,node.val,high);}publicstaticvoidmain(String[]args){TreeNoderoot=newTreeNode(5);root.left=newTreeNode(1);root权限t=新树节点(4);root.right.left=newTreeNode(3);root.right.right=newTreeNode(6);System.out.println(isValidBST(root));}}【每日留言】生活不是用来寻找答案的,不是用来解决问题的,是用来快乐生活的。与其愁眉苦脸地工作,不如把工作交给娱乐。勤奋的人万岁!