牛客一题:找到搜索二叉树中两个错误的节点
今天分享一道在牛客网上的题目:找到搜索二叉树中两个错误的节点
结果,牛客网上面用例测试是通过的,反而显示没通过。
以此篇记 这一次的乌龙
各位朋友发现哪里有问题欢迎@楼主,互相学习
public static int[] findError (TreeNode root) {
// write code here
return process(root);
}
public static int[] process(TreeNode root){
int[] ret = new int[2];
if(root == null )return ret;
Stack<TreeNode> stack = new Stack<>();
int preValue = root.val;
while(!stack.isEmpty() || root != null){
while(root!= null){
stack.add(root);
root = root.left;
}
root = stack.pop();
// process
if(preValue > root.val){
if(ret[1] == 0){
ret[0] = root.val;
ret[1] = preValue;
}else {
if(preValue > ret[1]) ret[1] = preValue;
if(root.val < ret[0])ret[0] = root.val;
}
}
preValue = root.val;
root = root.right;
}
return ret;
}