문제 링크
https://leetcode.com/problems/binary-tree-inorder-traversal/트리란?
트리 용어
트리의 순회
대표적인 순회 방법
소스 코드
// 중위 순회이므로 left가 먼저
function inorderTraversal(root: TreeNode | null): number[] {
let stack = [];
let result = [];
while(root !== null || stack.length !== 0) {
while(root !== null) {
stack.push(root);
root = root.left;
}
root = stack.pop();
result.push(root.val);
root = root.right;
}
return result;
};
즉 플로우를 글로 나타내면
[ [1,null,2,3] ] → left가 null 2번째 while문을 빠져나와 stack에서 pop을 한 후 root.val 인 1을 푸쉬 → right 값을 넣어 root가 [2,3]으로 변하고 [[2,3]] 형태로 stack에 push 됨 → left인 3이 있으므로 한번 더 push가 되어 총 stack 메모리는 [[2,3],[3]] 형태가 됨 → pop이 이루어지면 val인 3이 push → 한번 더 pop이 이루어지면 2가 push → stack메모리가 비어졌으므로 반복문 종료 → 즉 결과 값은 [1,3,2] 가 리턴