一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请按升序输出这两个错误节点的值。(每个节点的值各不相同)
public class findError {
Integer res1 = null;
Integer res2 = null;
public int[] findError (TreeNode root) {
find(root);
return new int[]{res1,res2};
}
TreeNode tmp= null;
// 使用二叉树的中序遍历
private void find(TreeNode root){
if(root == null){
return ;
}
find(root.left);
if(tmp != null && root.val < tmp.val){
res1 = root.val;
if(res2 == null){
res2 = tmp.val;
}
}
tmp = root;
find(root.right);
}
}