File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed
Problems/07-All-Elements-in-Two-Binary-Search-Trees Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * class TreeNode {
4
+ * val: number
5
+ * left: TreeNode | null
6
+ * right: TreeNode | null
7
+ * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8
+ * this.val = (val===undefined ? 0 : val)
9
+ * this.left = (left===undefined ? null : left)
10
+ * this.right = (right===undefined ? null : right)
11
+ * }
12
+ * }
13
+ */
14
+
15
+ function getAllElements ( root1 : TreeNode | null , root2 : TreeNode | null ) : number [ ] {
16
+ function getElements ( node : TreeNode | null ) : number [ ] {
17
+ let res : number [ ] = [ ] ;
18
+ let queue : TreeNode [ ] = [ ] ;
19
+ while ( node || queue . length ) {
20
+ if ( node ) {
21
+ queue . push ( node ) ;
22
+ node = node . left ;
23
+ continue ;
24
+ }
25
+ node = queue . pop ( ) ;
26
+ res . push ( node . val ) ;
27
+ node = node . right ;
28
+ }
29
+ return res ;
30
+ }
31
+ let res :number [ ] = [ ] ;
32
+ let arr1 = getElements ( root1 ) ;
33
+ let ptr1 = arr1 . length - 1 ;
34
+ let arr2 = getElements ( root2 ) ;
35
+ let ptr2 = arr2 . length - 1 ;
36
+ let ptr = arr1 . length + arr2 . length - 1 ;
37
+ while ( ptr >= 0 ) {
38
+ if ( ptr2 < 0 || arr1 [ ptr1 ] > arr2 [ ptr2 ] ) {
39
+ res [ ptr -- ] = arr1 [ ptr1 -- ] ;
40
+ } else {
41
+ res [ ptr -- ] = arr2 [ ptr2 -- ] ;
42
+ }
43
+ }
44
+ return res ;
45
+ } ;
You can’t perform that action at this time.
0 commit comments