File tree 1 file changed +60
-0
lines changed
1 file changed +60
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * function TreeNode(val, left, right) {
4
+ * this.val = (val===undefined ? 0 : val)
5
+ * this.left = (left===undefined ? null : left)
6
+ * this.right = (right===undefined ? null : right)
7
+ * }
8
+ */
9
+ /**
10
+ * @param {TreeNode } root1
11
+ * @param {TreeNode } root2
12
+ * @return {number[] }
13
+ */
14
+ var getAllElements = function ( root1 , root2 ) {
15
+ const set1 = new Set ( ) , set2 = new Set ( )
16
+ traverse ( root1 , set1 )
17
+ traverse ( root2 , set2 )
18
+ const res = [ ]
19
+ const it1 = set1 [ Symbol . iterator ] ( )
20
+ const it2 = set2 [ Symbol . iterator ] ( )
21
+ let { value : value1 , done : done1 } = it1 . next ( )
22
+ let { value : value2 , done : done2 } = it2 . next ( )
23
+ while ( done1 === false && done2 === false ) {
24
+ if ( value1 < value2 ) {
25
+ res . push ( value1 )
26
+ const obj = it1 . next ( )
27
+ value1 = obj . value
28
+ done1 = obj . done
29
+ } else {
30
+ res . push ( value2 )
31
+ const obj = it2 . next ( )
32
+ value2 = obj . value
33
+ done2 = obj . done
34
+ }
35
+ }
36
+
37
+ while ( done1 === false ) {
38
+ res . push ( value1 )
39
+ const obj = it1 . next ( )
40
+ value1 = obj . value
41
+ done1 = obj . done
42
+ }
43
+
44
+ while ( done2 === false ) {
45
+ res . push ( value2 )
46
+ const obj = it2 . next ( )
47
+ value2 = obj . value
48
+ done2 = obj . done
49
+ }
50
+
51
+ return res
52
+
53
+
54
+ function traverse ( node , set ) {
55
+ if ( node == null ) return
56
+ traverse ( node . left , set )
57
+ set . add ( node . val )
58
+ traverse ( node . right , set )
59
+ }
60
+ } ;
You can’t perform that action at this time.
0 commit comments