-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsortedto tree.js
More file actions
54 lines (54 loc) · 1.35 KB
/
Copy pathsortedto tree.js
File metadata and controls
54 lines (54 loc) · 1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
function ListNode(val) {
this.val = val;
this.next = null;
}
function TreeNode(val) {
this.val = val;
this.left = this.right = null;
}
var arr = [-10,-3,0,5,9];
var node = new ListNode(arr[0]);
var nodeIt = node;
for (var i in arr) {
if (i == arr.length) {
nodeIt.next = null;
} else
nodeIt.next = new ListNode(arr[i+1]);
}
var head = node;
var sortedListToBST = function(head) {
var counter = 0, it = head, i;
while (it != null) {
counter++;
it = it.next;
}
var mid = counter/2;
it = head
for (i = 0; i < mid; i++) {
it = it.next;
}
var mid = it.val;
var root = new TreeNode(mid);
var treeIt = root;
it = head;
while (it != null) {
var cursor = it;
var node = new TreeNode(it.val);
if (it.val < treeIt.val && treeIt.left == null) {
var node = new TreeNode(it.val);
treeIt.left = node;
treeIt = root;
it = it.next;
} else if (it.val > treeIt.val && treeIt.right == null) {
var node = new TreeNode(it.val);
treeIt.right = node;
treeIt = root;
it = it.next;
} else if (it.val < treeIt.val)
treeIt = treeIt.left;
else if (it.val > treeIt.val)
treeIt = treeIt.right;
}
return root;
};
console.log(sortedListToBST(head));