Skip to content

Commit 4cc2a75

Browse files
authored
Refactored Binary Tree Right Side View.java
1 parent 79c75cd commit 4cc2a75

File tree

1 file changed

+30
-31
lines changed

1 file changed

+30
-31
lines changed

Medium/Binary Tree Right Side View.java

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,40 @@
44
* int val;
55
* TreeNode left;
66
* TreeNode right;
7-
* TreeNode(int x) { val = x; }
7+
* TreeNode() {}
8+
* TreeNode(int val) { this.val = val; }
9+
* TreeNode(int val, TreeNode left, TreeNode right) {
10+
* this.val = val;
11+
* this.left = left;
12+
* this.right = right;
13+
* }
814
* }
915
*/
1016
class Solution {
11-
List<Integer> list;
12-
public List<Integer> rightSideView(TreeNode root) {
13-
list = new ArrayList<>();
14-
if (root == null) {
15-
return list;
16-
}
17-
18-
helper(root);
19-
return list;
17+
public List<Integer> rightSideView(TreeNode root) {
18+
if (root == null) {
19+
return new ArrayList<>();
2020
}
21-
22-
private void helper(TreeNode root) {
23-
Queue<TreeNode> queue = new LinkedList<>();
24-
queue.add(root);
25-
26-
while (!queue.isEmpty()) {
27-
int size = queue.size();
28-
29-
for (int i=1; i<=size; i++) {
30-
TreeNode popped = queue.remove();
31-
if (popped.left != null) {
32-
queue.add(popped.left);
33-
}
34-
if (popped.right != null) {
35-
queue.add(popped.right);
36-
}
37-
38-
if (i == size) {
39-
list.add(popped.val);
40-
}
41-
}
21+
List<Integer> list = new ArrayList<>();
22+
Queue<TreeNode> queue = new LinkedList<>();
23+
queue.add(root);
24+
while (!queue.isEmpty()) {
25+
int size = queue.size();
26+
TreeNode rightMost = null;
27+
while (size-- > 0) {
28+
TreeNode removed = queue.remove();
29+
if (rightMost == null) {
30+
rightMost = removed;
31+
}
32+
if (removed.right != null) {
33+
queue.add(removed.right);
4234
}
35+
if (removed.left != null) {
36+
queue.add(removed.left);
37+
}
38+
}
39+
list.add(rightMost.val);
4340
}
41+
return list;
42+
}
4443
}

0 commit comments

Comments
 (0)