Leetcode Java Binary Tree Right Side View
업데이트:
문제
코드
public class Solution {
public List<Integer> rightSideView(TreeNode root) {
List<Integer> result = new ArrayList<>();
this.recursive(result, root, 0);
return result;
}
private void recursive(List<Integer> list, TreeNode treeNode, int level) {
if (treeNode == null) {
return;
}
if (list.size() == level) {
list.add(treeNode.val);
}
this.recursive(list, treeNode.right, level + 1);
this.recursive(list, treeNode.left, level + 1);
}
}
결과
설명
-
주어진 TreeNode인 root를 이용하여 top-bottom 순으로 동일 Level 내 가장 우측에 존재하는 TreeNode의 val 값을 List에 넣는 문제이다.
- 재귀 호출을 이용하여 List에 top-bottom 순으로 동일 Level 내 가장 우측에 존재하는 TreeNode의 val 값을 넣어준다.
- treeNode가 null인 경우 진행이 불가능하므로 반환한다.
- list.size()와 level이 동일한 경우, 해당 TreeNode의 val 값을 List에 넣어준다.
- treeNode.right -> treeNode.left 순으로 재귀 호출을 수행하여 각 Level 내 가장 우측에 존재하는 TreeNode 의 val 값을 넣어준다.
- 재귀 호출이 완료되면 top-bottom 순으로 동일 Level 내 가장 우측에 존재하는 TreeNode의 val 값을 넣은 List인 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기