题目:一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请按升序输出这两个错误节点的值。(每个节点的值各不相同)
思路:
代码:
1 /* 2 * function TreeNode(x) { 3 * this.val = x; 4 * this.left = null; 5 * this.right = null; 6 * } 7 */ 8 9 /** 10 * 11 * @param root TreeNode类 the root 12 * @return int整型一维数组 13 */ 14 function inOrder(n,arr){ 15 if(n.left){ 16 inOrder(n.left,arr); 17 } 18 arr.push(n.val); 19 if(n.right){ 20 inOrder(n.right,arr); 21 } 22 } 23 function findError( root ) { 24 // write code here 25 var res = []; 26 var arr = []; 27 inOrder(root,arr); 28 for(var i = 0; i < arr.length; i++){ 29 if(arr[i] > arr[i+1]){ 30 res.push(arr[i]); 31 } 32 } 33 for(var i = arr.length; i > 0; i--){ 34 if(arr[i] < arr[i-1]){ 35 res.push(arr[i]); 36 } 37 } 38 return [Math.min(...res), Math.max(...res)]; 39 } 40 module.exports = { 41 findError : findError 42 };