当前位置:网站首页>Leetcode problem solving -- 98 Validate binary search tree
Leetcode problem solving -- 98 Validate binary search tree
2022-07-06 03:07:00 【Snowy solitary boat】
Recursive version
public boolean isValidBST(TreeNode root) {
return range(root,Integer.MIN_VALUE-1L,Integer.MAX_VALUE+1L);
}
public boolean range(TreeNode node,long min,long max){
if (node==null) return true;
if (node.val<=min||node.val>=max) return false;
return range(node.left,min,node.val)&&range(node.right,node.val,max);
}
Wrong thinking :
Before saying the right way of thinking , Let me first talk about the pit I stepped on , I was thinking about recursion , Then judge whether the value of the left node is greater than or equal to the root node or the value of the right node is less than or equal to the root node , Just go back to false, But in fact, this is not possible , Please look at the chart below.
7 / \ 2 5 / \ 1 9
According to the above idea, the result is true, This is because the upper limit of the left subtree is ignored , And the right subtree has the error caused by the lower limit
The right way of thinking :
Use the upper and lower limits to judge
- Because the root node has no upper and lower limits , Therefore, the maximum and minimum values that can be stored by the variable type are used as the upper and lower limits
- If the node is null Go straight back to true
- If the node is not null, And the node value is not within the range specified by the upper and lower limits ,return false
- Continue to judge subtree , But should pay attention to , The upper limit of the left subtree is the value of the current subtree , The lower limit of the right subtree is the value of the current subtree
Iteration version
public boolean isValidBST(TreeNode root) {
Stack<TreeNode> stack = new Stack<>();
TreeNode node = root;
long prev = Integer.MIN_VALUE-1L;
while (!stack.isEmpty()||node!=null){
while (node!=null){
stack.push(node);
node = node.left;
}
node = stack.pop();
if (node.val<=prev) return false;
prev = node.val;
node = node.right;
}
return true;
}
Ideas :
BSTree In the middle order traversal of , The value of the previous node to be traversed must be less than the value of the next node to be traversed , Therefore, a node that stores the value of the previous traversed node is added prev Variables for comparison
This scheme is based on the understanding of the iterative method of middle order traversal , If a little partner doesn't know , And I want to know more about the explanation idea of middle order traversal iteration , Sure Click here to jump
边栏推荐
- 【若依(ruoyi)】设置主题样式
- MySQL advanced notes
- JS regular filtering and adding image prefixes in rich text
- Linear programming matlab
- Pat 1046 shortest distance (20 points) simulation
- SD卡报错“error -110 whilst initialising SD card
- I sorted out a classic interview question for my job hopping friends
- Differences and application scenarios between resulttype and resultmap
- C language - Blue Bridge Cup - promised score
- 3857墨卡托坐标系转换为4326 (WGS84)经纬度坐标
猜你喜欢
#PAT#day10
如何精准识别主数据?
2022工作中遇到的问题四
Performance test method of bank core business system
Codeforces 5 questions par jour (1700 chacune) - jour 6
XSS challenges绕过防护策略进行 XSS 注入
解决:AttributeError: ‘str‘ object has no attribute ‘decode‘
OCR文字识别方法综述
Modeling specifications: naming conventions
BUUCTF刷题笔记——[极客大挑战 2019]EasySQL 1
随机推荐
#PAT#day10
【Kubernetes 系列】一文学会Kubernetes Service安全的暴露应用
这些不太会
codeforces每日5题(均1700)-第六天
How to improve the enthusiasm of consumers when the member points marketing system is operated?
2022工作中遇到的问题四
C # create self host webservice
Solve 9 with C language × 9 Sudoku (personal test available) (thinking analysis)
主数据管理理论与实践
Microsoft speech synthesis assistant v1.3 text to speech tool, real speech AI generator
Solution: attributeerror: 'STR' object has no attribute 'decode‘
NR modulation 1
Technology sharing | what if Undo is too big
How to do function test well
有没有完全自主的国产化数据库技术
[ruoyi] ztree custom icon (iconskin attribute)
Handwriting database client
Single instance mode of encapsulating PDO with PHP in spare time
Installation and use tutorial of cobaltstrike-4.4-k8 modified version
A copy can also produce flowers