1
1
package io .dksifoua .leetcode .binarytreerightsideview ;
2
2
3
3
import io .dksifoua .leetcode .utils .TreeNode ;
4
+ import io .dksifoua .leetcode .utils .Tuple2 ;
4
5
5
6
import java .util .*;
6
7
@@ -10,27 +11,24 @@ public List<Integer> rightSideView(TreeNode root) {
10
11
if (root == null ) return new ArrayList <>();
11
12
12
13
List <Integer > result = new ArrayList <>();
13
- Queue <LevelToNodeTuple > queue = new LinkedList <>() {{ add (new LevelToNodeTuple (0 , root )); }};
14
+ Queue <Tuple2 < Integer , TreeNode >> queue = new LinkedList <>() {{ add (new Tuple2 <> (0 , root )); }};
14
15
while (!queue .isEmpty ()) {
15
- LevelToNodeTuple levelToNodeTuple = queue .remove ();
16
- int level = levelToNodeTuple .level ();
17
- TreeNode node = levelToNodeTuple .node ();
16
+ Tuple2 < Integer , TreeNode > levelToNodeTuple = queue .remove ();
17
+ int level = levelToNodeTuple .first ();
18
+ TreeNode node = levelToNodeTuple .second ();
18
19
if (result .size () - 1 < level ) {
19
20
result .add (node .getValue ());
20
21
} else {
21
22
result .set (level , node .getValue ());
22
23
}
23
24
24
- if (node .getLeft () != null ) queue .add (new LevelToNodeTuple (level + 1 , node .getLeft ()));
25
- if (node .getRight () != null ) queue .add (new LevelToNodeTuple (level + 1 , node .getRight ()));
25
+ if (node .getLeft () != null ) queue .add (new Tuple2 <> (level + 1 , node .getLeft ()));
26
+ if (node .getRight () != null ) queue .add (new Tuple2 <> (level + 1 , node .getRight ()));
26
27
}
27
28
28
29
return result ;
29
30
}
30
31
31
- private record LevelToNodeTuple (int level , TreeNode node ) {
32
- }
33
-
34
32
public List <Integer > rightSideViewRecursive (TreeNode root ) {
35
33
if (root == null ) return new ArrayList <>();
36
34
0 commit comments