본문 바로가기

LeetCode

590. N-ary Tree Postorder Traversal / TypeScript

Given the root of an n-ary tree, return the postorder traversal of its nodes' values.

Nary-Tree input serialization is represented in their level order traversal. Each group of children is separated by the null value (See examples)

 

Example 1:

Input: root = [1,null,3,2,4,null,5,6]
Output: [5,6,3,2,4,1]

Example 2:

Input: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
Output: [2,6,14,11,7,3,12,8,4,13,9,10,5,1]

 

출처 : https://leetcode.com/problems/n-ary-tree-postorder-traversal/

 

풀이 

/**
 * Definition for node.
 * class _Node {
 *     val: number
 *     children: _Node[]
 *     constructor(val?: number) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.children = []
 *     }
 * }
 */

function postorder(root: Node | null): number[] {
    if(!root) return [];
    const result = [];
    function traverse(node) {
        const children = node.children;
        if(children.length) {
            for(let i=0; i<children.length; i++) {
                traverse(children[i]);
            }
        }
        result.push(node.val);
    }
    traverse(root);

    return result;
};

 

트리 구조의 데이터를 후위 순회(postorder traversal)하는 함수

후위 순회는 각 노드의 자식을 먼저 방문한 후에 그 노드를 방문하는 방식