Hot100-验证二叉搜索树
错误代码/** * 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, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */ class Solution { public boolean isValidBST(TreeNode root) { //开始就保障他的左右集合以及 if(rootnull) return true; TreeNode rnull;TreeNode lnull; if(root.right!null) rroot.right; if(root.left!null) lroot.left; if(l!nulll.valroot.val||r!nullr.valroot.val) return false; else{ isValidBST(l); isValidBST(r); } return true; } }误区1.你只考虑了在单一树中存在数父子兄弟错误2.代码if shit 比较过于复杂都什么跟什么3.完全忽视数据范围树中节点数目范围在[1, 104] 内-231 Node.val 231 - 1(31是指数)正确解法class Solution { public boolean isValidBST(TreeNode root) { return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE); } //根据条件设置区间Long.MIN_VALUE, Long.MAX_VALUE public boolean isValidBST(TreeNode node, long lower, long upper) { if (node null) { return true;//为null如果是头节点也是符合的不是头节点不符合 } if (node.val lower || node.val upper) { return false; } return isValidBST(node.left, lower, node.val) isValidBST(node.right, node.val, upper); //我们要检查值是否满足左儿子上限为父值右儿子下限为父值 那么如何检查孙子中存在的过小/过大问题 } }最妙的的点如何检查孙子中存在的过小/过大问题传递子孙上下限左孙不能大于爷爷右孙不能小于爷爷相邻三代为一个传递系统将规矩延续下去爸爸当爷爷孙子当爸爸代代相传暂时无法在飞书文档外展示此内容数值下限上限Boolean5Long.MIN_VALUELong.MAX_VALUET4Long.MIN_VALUE5T65Long.MAX_VALUET1045F356
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2433440.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!