-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstructy-047-allTreePaths.js
76 lines (60 loc) · 1.4 KB
/
structy-047-allTreePaths.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
// https://structy.net/problems/premium/all-tree-paths
class Node {
constructor(val) {
this.val = val;
this.right = null;
this.left = null;
}
}
// p: root of bi tree
// r: array matrix m x n
const allTreePaths = (root) => {
if (!root) return [];
if (!root.left && !root.right) return [[root.val]];
const left = allTreePaths(root.left);
const right = allTreePaths(root.right);
const arrs = [...left, ...right];
for (const arr of arrs) {
arr.unshift(root.val);
}
return arrs;
};
const a = new Node("a");
const b = new Node("b");
const c = new Node("c");
const d = new Node("d");
const e = new Node("e");
const f = new Node("f");
a.left = b;
a.right = c;
b.left = d;
b.right = e;
c.right = f;
// a
// / \
// b c
// / \ \
// d e f
console.log(allTreePaths(a)); // ->
// [
// [ 'a', 'b', 'd' ],
// [ 'a', 'b', 'e' ],
// [ 'a', 'c', 'f' ]
// ]
[
"a",
["b", ["d", [], "d", []], "b", ["e", [], "e", []]],
"a",
["c", [], "c", ["f", [], "f", []]],
];
// iteration NOT WORKING
// const allTreePaths = (root) => {
// const stack = [root];
// while (stack.length > 0) {
// const current = stack.pop();
// console.log(current.val);
// current.left && stack.push(current.left);
// current.right && stack.push(current.right);
// }
// return stack;
// };