java刷题-98验证二叉搜索树
Posted Anrys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java刷题-98验证二叉搜索树相关的知识,希望对你有一定的参考价值。
题目
代码
递归
class Solution {
public boolean isValidBST(TreeNode root) {
return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);
}
private boolean isValidBST(TreeNode root, long min, long max) {
if (root == null) return true;
if (root.val >= max || root.val <= min) return false;
//比较的左子树时候min<root.left<root.val即可 root.val<root.right<max即可
return isValidBST(root.left, min, root.val) && isValidBST(root.right, root.val, max);
}
}
中序遍历
public boolean isValidBST(TreeNode root) {
if(root==null) return true;
Stack<TreeNode> stack = new Stack<TreeNode>();
long lastVal = Long.MIN_VALUE;
while(root!=null || !stack.isEmpty()){
while(root!=null){
stack.push(root);
root=root.left;
}
root=stack.pop();
if(lastVal >= root.val) return false;
lastVal = root.val;
root=root.right;
}
return true;
}
结果
以上是关于java刷题-98验证二叉搜索树的主要内容,如果未能解决你的问题,请参考以下文章
[JavaScript 刷题] 树 - 验证二叉搜索树, leetcode 98
[JavaScript 刷题] 树 - 验证二叉搜索树, leetcode 98
Leetcode刷题100天—98. 验证二叉搜索树( 二叉树)—day35