[LeetCode] 94. Binary Tree Inorder Traversal

Chobby·2024년 12월 23일
1

LeetCode

목록 보기
128/194

😎풀이

해당 문제는 원래 재귀적으로 풀면 굉장히 간단한 문제이다.

중위탐색이라는 개념을 이해하고 있다면 재귀적인 생각을 안 할 수가 없는데

그렇게 되면 시간 복잡도는 문제될 것이 없지만 공간 복잡도가 굉장히 커지게 된다.

따라서 문제에 제시된 대로 stack을 구현해 재귀의 개념을 iterative하게 풀이하였음

/**
 * Definition for a binary tree node.
 * class TreeNode {
 *     val: number
 *     left: TreeNode | null
 *     right: TreeNode | null
 *     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.left = (left===undefined ? null : left)
 *         this.right = (right===undefined ? null : right)
 *     }
 * }
 */

function inorderTraversal(root: TreeNode | null): number[] {
    const result = [];
    // 재귀함수를 사용하지 않기 위해 stack자료형 사용
    const stack = [];
    let current = root;
    while(current || stack.length > 0) {
        // 중위순회는 좌측 노드 우선 탐색
        while(current) {
            stack.push(current);
            current = current.left;
        }

        current = stack.pop();
        result.push(current.val);

        current = current.right;
    }

    return result
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글