Skip to content

Commit 5bf9a19

Browse files
authored
Create 1305-all-elements-in-two-binary-search-trees.js
1 parent 9a60e06 commit 5bf9a19

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
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+
};

0 commit comments

Comments
 (0)