Given the root of a binary tree, return the inorder traversal of its nodes' values.
Example 1:
Input: root = [1,null,2,3]
Output: [1,3,2]
Explanation:

Example 2:
Input: root = [1,2,3,4,5,null,8,null,null,6,7,9]
Output: [4,2,6,5,7,1,3,9,8]
Explanation:

문제 풀이
/**
* Definition for a binary tree node.
Left -> Root -> Right
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
import java.util.Stack;
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
return traversal(root, new ArrayList<>());
}
public List<Integer> traversal(TreeNode root, List<Integer> visited) {
TreeNode cur = root;
if (cur == null) {
return visited;
}
traversal(cur.left, visited);
visited.add(cur.val);
traversal(cur.right, visited);
return visited; // because visited is a reference type
}
}
풀이
- List<Integer> visited = 이미 방문한 TreeNode
- 현재 TreeNode가 null이면 그냥 visited list를 돌려준다
- 현재 TreeNode가 null이 아니면, 재귀함수를 통해 왼쪽을 넣어주고, 현재 노드를 visited안에 넣고, 재귀함수로 오른쪽을 넣어준다.
회고
- 쉬운 문제임에도 불구하고.. 꽤 걸렸다. 확실히... 다른 문제 풀이 유형은 모르겠지만 tree/graph/dfs/bbs가 내 약점인건 그냥 확실하다. 그냥 연습하는 수 밖에 없다.
'코딩테스트 > DFS,BFS' 카테고리의 다른 글
| [프로그래머스] 게임 맵 최단거리 - 파이썬 (2) | 2025.07.26 |
|---|---|
| [프로그래머스] 전력망을 둘로 나누기 - 자바 (0) | 2025.07.20 |
| [프로그래머스] 타깃넘버 (파이썬, 자바) (0) | 2025.07.18 |