-
Notifications
You must be signed in to change notification settings - Fork 0
/
FindElements.js
99 lines (90 loc) · 2.08 KB
/
FindElements.js
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
//From 1261 in LeetCode
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
*/
class FindElements {
constructor(root) {
let holding = [0];
function recoverTree(branch) {
let currentVal = branch.val;
if (branch.left !== null) {
branch.left.val = currentVal * 2 + 1;
holding.push(branch.left.val);
recoverTree(branch.left);
}
if (branch.right !== null) {
branch.right.val = currentVal * 2 + 2;
holding.push(branch.right.val);
recoverTree(branch.right);
}
}
root.val = 0;
recoverTree(root);
this.root = root;
this.holding = holding;
}
}
/**
* @param {number} target
* @return {boolean}
*/
FindElements.prototype.find = function(target) {
return this.holding.includes(target);
};
/**
* Your FindElements object will be instantiated and called as such:
* var obj = new FindElements(root)
* var param_1 = obj.find(target)
*/
//faster
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
*/
class FindElementsII {
constructor(root) {
let holding = { 0: true };
function recoverTree(branch) {
let currentVal = branch.val;
if (branch.left !== null) {
branch.left.val = currentVal * 2 + 1;
holding[branch.left.val] = true;
recoverTree(branch.left);
}
if (branch.right !== null) {
branch.right.val = currentVal * 2 + 2;
holding[branch.right.val] = true;
recoverTree(branch.right);
}
}
root.val = 0;
recoverTree(root);
this.root = root;
this.holding = holding;
}
}
/**
* @param {number} target
* @return {boolean}
*/
FindElements.prototype.find = function(target) {
return this.holding[target] !== undefined;
};
/**
* Your FindElements object will be instantiated and called as such:
* var obj = new FindElements(root)
* var param_1 = obj.find(target)
*/