系列文章目录
文章目录
- 系列文章目录
- 前言
前言
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
描述
一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请按升序输出这两个错误节点的值。(每个节点的值各不相同)
搜索二叉树:满足每个节点的左子节点小于当前节点,右子节点大于当前节点。
样例1图
样例2图
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode类 the root
* @return int整型一维数组
*/
//存储结果集的二维数组
int[] result = new int[2];
int index = 1;
TreeNode preNode;
public int[] findError (TreeNode root) {
// 特判
if(root == null) {
return result;
}
// 递归左子树,寻找该树符合条件的节点
findError(root.left);
if(preNode == null) {
preNode = root;
}
// 判断是否是出错的节点
if(index == 1 && root.val < preNode.val) {
result[index] = preNode.val;
index--;
}
if(index == 0 && root.val < preNode.val) {
result[index] = root.val;
}
preNode = root;
// 递归右子树,寻找该树符合条件的节点
findError(root.right);
return result;
}
}