Post

Leetcode 0589. N-ary Tree Preorder Traversal

Given the `root` of an n-ary tree, return the preorder 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)

Description

Given the root of an n-ary tree, return the preorder 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: [1,3,5,6,2,4]

N-ary Tree Preorder Question 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: [1,2,3,6,7,11,14,4,8,12,5,9,13,10]

N-ary Tree Preorder Question 2

Constraints:

  • The number of nodes in the tree is in the range [0, 10^4].
  • 0 <= Node.val <= 10^4
  • The height of the n-ary tree is less than or equal to 1000.

Follow up:

  • Recursive solution is trivial, could you do it iteratively?

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution:
    # Iteration
    # Time Complexity: BigO(N)
    # Space Complexity: BigO(1)
    def preorder(self, root: 'TreeNode') -> List[int]:
        result = []
        self.dfs(root, result)
        return result

    def dfs(self, root, result) -> List[int]:
        if root is None:
            return
        result.append(root.val)
        for child in root.children:
            self.dfs(child, result)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
 * Definition for node.
 */
export class Node {
  val: number;
  children: Node[];
  constructor(val?: number) {
    this.val = val === undefined ? 0 : val;
    this.children = [];
  }
}

/**
 * Iteration
 * Time Complexity: BigO(N)
 * Space Complexity: BigO(1)
 */
function preorder(root: Node | null): number[] {
  let res: number[] = [];
  const helper = (root: Node | null) => {
    if (root === null) return null;
    res.push(root.val);
    for (const child of root.children) {
      helper(child);
    }
  };
  helper(root);
  return res;
}
This post is licensed under CC BY 4.0 by the author.