找到搜索二叉树中两个错误的节点

题目:一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请按升序输出这两个错误节点的值。(每个节点的值各不相同)

思路:

代码:

 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 };

 

上一篇:construct-binary-tree-from-preorder-and-inorder-traversal


下一篇:C# vb .net实现焦距柔化特效滤镜