코딩테스트/DFS,BFS

[Leetcode] Binary Tree Inorder Traversal - 자바

leejunkim 2025. 7. 18. 23:37

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가 내 약점인건 그냥 확실하다. 그냥 연습하는 수 밖에 없다.