Leetcode Java Binary Tree Right Side View

업데이트:

문제

Link

코드

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);
  }

}

결과

Link

설명

  1. 주어진 TreeNode인 root를 이용하여 top-bottom 순으로 동일 Level 내 가장 우측에 존재하는 TreeNode의 val 값을 List에 넣는 문제이다.

  2. 재귀 호출을 이용하여 List에 top-bottom 순으로 동일 Level 내 가장 우측에 존재하는 TreeNode의 val 값을 넣어준다.
    • treeNode가 null인 경우 진행이 불가능하므로 반환한다.
    • list.size()와 level이 동일한 경우, 해당 TreeNode의 val 값을 List에 넣어준다.
    • treeNode.right -> treeNode.left 순으로 재귀 호출을 수행하여 각 Level 내 가장 우측에 존재하는 TreeNode 의 val 값을 넣어준다.
  3. 재귀 호출이 완료되면 top-bottom 순으로 동일 Level 내 가장 우측에 존재하는 TreeNode의 val 값을 넣은 List인 result를 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기