우규이인우윀
Eager To Learn 🌌
우규이인우윀
전체 방문자
였늘
μ–΄μ œ

λΈ”λ‘œκ·Έ 메뉴

  • 🏑 ν™ˆ
  • πŸš€ κΉƒν—ˆλΈŒ
  • β›… νƒœκ·Έ ν΄λΌμš°λ“œ
  • λΆ„λ₯˜ 전체보기 (217)
    • πŸ‘¨πŸ»‍πŸ’» PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm 기법 (1)
      • 바킹독 (21)
    • λΈ”λ‘œκ·Έ 이사 (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • 자료ꡬ쑰 (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • κ°œλ°œμ„œμ  (15)
      • 가상 λ©΄μ ‘ μ‚¬λ‘€λ‘œ λ°°μš°λŠ” λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œ 섀계 기초 (1)
      • 였브젝트 - 쑰영호 (7)
      • μΉœμ ˆν•œ SQL νŠœλ‹ (7)
    • 회고 (2)
hELLO Β· Designed By μ •μƒμš°.
우규이인우윀

Eager To Learn 🌌

πŸ‘¨πŸ»‍πŸ’» PS/LeetCode 150

[Java] 199. Binary Tree Right Side View

2023. 9. 6. 12:05

문제 νŒŒμ•…

μ£Όμ–΄μ§€λŠ” 트리λ₯Ό, 였λ₯Έμͺ½μ—μ„œ λ°”λΌλ³΄μ•˜μ„ λ•Œ λ³΄μ΄λŠ” λ…Έλ“œλ“€μ„ λ°˜ν™˜ν•΄μ•Όν•œλ‹€.

 

문제 해석 μ‹œ, μ•½κ°„ ν˜Όλ™μ΄ μžˆμ–΄μ„œ μ²˜μŒμ—λŠ” 트리의 κ°€μž₯ 였λ₯Έμͺ½ λ…Έλ“œλ“€μ„ 좜λ ₯ν•΄μ•Όν•˜λŠ” 쀄 μ•Œμ•˜λ‹€.

 

λ”°λΌμ„œ μœ„μ™€ 같이 κ΅¬μ„±λœ 트리의 경우, root λ…Έλ“œμ˜ right node λŠ” μ—†κΈ° λ•Œλ¬Έμ— κ²°κ³Όκ°€ [1] μ΄ λ‚˜μ™€μ•Ό λœλ‹€κ³  μƒκ°ν–ˆλŠ”λ°

 

μš”κ΅¬ν•˜λŠ” 닡은 [1,2] μ˜€λ‹€.

 

해석을 μ°Ύμ•„λ³΄λ‹ˆ, 이 트리λ₯Ό 였λ₯Έμͺ½μ—μ„œ 바라봀을 λ•Œ λ³΄μ΄λŠ” λ…Έλ“œλ“€μ„ 좜λ ₯ν•˜λΌλŠ” λœ»μ΄μ—ˆλ‹€.


풀이

1️⃣ μ „μœ„ 탐색을 μ΄μš©ν•œ 풀이

μ „μœ„ 탐색

 

πŸ’‘ λ– μ˜€λ₯Έ Idea

μ „μœ„ νƒμƒ‰μ˜ 경우 μœ„μ™€ 같이 루트 λ…Έλ“œμ—μ„œ μ‹œμž‘ν•˜μ—¬ μ™Όμͺ½ ν˜Ήμ€ 였λ₯Έμͺ½ 경둜의 끝에 λ„λ‹¬ν•˜λ©΄ λΆ€λͺ¨μ˜ λ°˜λŒ€νŽΈ λ…Έλ“œλ‘œ λ„˜μ–΄κ°€λŠ” λ°©μ‹μœΌλ‘œ νƒμƒ‰ν•œλ‹€.

μœ„ 문제의 κ²½μš°λŠ” κ°€μž₯ 였λ₯Έμͺ½μ„ νƒμƒ‰ν•΄μ•Όν•˜λ―€λ‘œ

경둜λ₯Ό 였λ₯Έμͺ½μœΌλ‘œ μ‹œμž‘ν•˜λ„λ‘ μ „μœ„ 탐색을 κ΅¬ν˜„ν•˜λ©΄ λ˜κ² λ‹€κ³  νŒλ‹¨ν•˜μ˜€λ‹€.

그리고 list 에 λ…Έλ“œλ₯Ό λ„£λŠ” μ‹œμ μ€ μ „μœ„ 탐색 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ λ§ˆλ‹€ depth νŒŒλΌλ―Έν„°λ₯Ό μ΄μš©ν•˜μ—¬

depth κ°€ μ¦κ°€ν•˜μ§€ μ•ŠμœΌλ©΄ μΆ”κ°€ν•˜μ§€ μ•ŠλŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•  수 μžˆμ—ˆλ‹€.

 

import java.util.*;

class Solution {
    List<Integer> list = new ArrayList<>();
    int maxDepth = -1;

    public List<Integer> rightSideView(TreeNode root) {
        preOrder(root, 0);

        return list;
    }

    private void preOrder(TreeNode node, int depth) {
        if (node == null) {
            return;
        }

        if (depth > maxDepth) {
            list.add(node.val);
            maxDepth = depth;
        }

        preOrder(node.right, depth + 1);
        preOrder(node.left, depth + 1);

    }
}

 

κ²°κ³Ό

 


πŸ“– 회고

이전 λ¬Έμ œλŠ” μ€‘μœ„ 탐색을 μ΄μš©ν•˜μ—¬ κ΅¬ν˜„ν•˜μ˜€λŠ”λ°, 

 

이번 λ¬Έμ œμ—μ„œλŠ” μ „μœ„ 탐색을 μ΄μš©ν•˜μ—¬ ν’€μ΄ν•˜μ˜€λ‹€.

 

λ”°λΌμ„œ, 이 λ¬Έμ œλŠ” ν›„μœ„ 탐색을 ν†΅ν•΄μ„œ λ³΄μ΄λŠ” λ…Έλ“œλ“€μ„ μš°μ„ μ μœΌλ‘œ μΆ”κ°€ν•΄μ£Όκ³ ,

 

λ‹€λ₯Έ λ…Έλ“œμ—μ„œ 좔가적인 depth κ°€ μ‘΄μž¬ν•  경우 μΆ”κ°€ν•΄μ£ΌλŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•˜λ©΄ λ˜μ—ˆλ‹€.

 

    'πŸ‘¨πŸ»‍πŸ’» PS/LeetCode 150' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [Java] 208. Implement Trie (Prefix Tree)
    • [Java] 637. Average of Levels in Binary Tree
    • [Java] 230. Kth Smallest Element in a BST
    • [Java] 530. Minimum Absolute Difference in BST
    우규이인우윀
    우규이인우윀
    개발자 κΏˆλ‚˜λ¬΄

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”