解题思路
- 改造后序遍历算法 后序遍历可以携带参数进行遍历
- 以root为根节点的子树节点 必须满足 max.val > root.val > min.val
- 针对一个节点需要做的事情
- 如果节点为空 直接true
- 如果一个节点值小于Min false
- 如果一个节点值大于max false
- 之后后序遍历算法 进行递归
class Solution {
public boolean isV(TreeNode root, TreeNode min,TreeNode max){
if(root == null)
{
return true;
}
if(min != null && root.val <= min.val){
return false;
}
if(max != null && root.val >= max.val){
return false;
}
return isV(root.left,min,root) && isV(root.right,root,max);
}
public boolean isValidBST(TreeNode root) {
return isV(root,null,null);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39