본문 바로가기

LeetCode

find-largest-value-in-each-tree-row / TypeScript

function largestValues(root: TreeNode | null): number[] {
    const answer: number[] = [];
    if (! root) return answer;
    const queue = [root];
    while (queue.length > 0) {
        let qLen: number = queue.length;
        let maxNumber: number = Number.MIN_SAFE_INTEGER;

        while (qLen-- > 0) {
            const node: TreeNode = queue.shift();
            maxNumber = Math.max(maxNumber, node.val);

            node.left && queue.push(node.left);
            node.right && queue.push(node.right);
        }

        answer.push(maxNumber);
    }

    return answer;
};

 

 

const node = queue.shift() 

 - queue 배열에서 첫 번째 요소를 제거하고, 그 요소를 node라는 변수에 할당하는 작업을 수행

 

 

 node.left && queue.push(node.left);
 node.right && queue.push(node.right);

 

- 현재 노드의 왼쪽 자식 노드 or 오른쪽 자식 노드가 존재하는지 확인.

   존재한다면, 즉 null이 아니라면, 해당 자식 노드를 queue.push(node.left or node.right)를 통해 queue 배열에 추가