import java.util.*;
public class Solution {
public boolean isValidBST (TreeNode root) {
Stack<TreeNode> stack = new Stack<>();
stack.add(root);
int curVal = Integer.MIN_VALUE;
while(!stack.isEmpty()){
TreeNode pop = stack.pop();
if(pop!=null){
stack.add(pop);
stack.add(pop.left);
}else if(!stack.isEmpty()){
TreeNode pop1 = stack.pop();
if(curVal<pop1.val){
curVal = pop1.val;
}else{
return false;
}
stack.add(pop1.right);
}
}
return true;
}
}