LeetCode 98. Validate Binary Search Tree
原题链接
中等
作者:
Ccc1Z
,
2020-07-15 19:18:52
,
所有人可见
,
阅读 481
思路:
- 一颗BST,它的中序遍历一定是升序排列的
- 所以可以写出它的中序遍历,然后判断是否是升序排列的
- 这里使用DFS
- 对每一个节点判断其是否再[minv,maxv]的区间里
- 根节点的区间为(-无穷,+无穷)
- 然后根据该点的位置递归处理
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isValidBST(TreeNode root) {
if(root == null)
return true;
return dfs(root,Long.MIN_VALUE,Long.MAX_VALUE);
}
private boolean dfs(TreeNode root,long minv,long maxv){
if(root == null)
return true;
if(root.val < minv || root.val > maxv)
return false;
return dfs(root.left,minv,root.val-1L) && dfs(root.right,root.val+1L,maxv);
}
}