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]
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]
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.