LeetCode 590. N-ary Tree Postorder Traversal

原题链接在这里:https://leetcode.com/problems/n-ary-tree-postorder-traversal/

题目:

Given 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).

Follow up:

Recursive solution is trivial, could you do it iteratively?

Example 1:

LeetCode 590. N-ary Tree Postorder Traversal_第1张图片

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

Example 2:

LeetCode 590. N-ary Tree Postorder Traversal_第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]

Constraints:

  • The height of the n-ary tree is less than or equal to 1000
  • The total number of nodes is between [0, 10^4]

题解:

First add root to stack.

When popping up the top node in stack, add its value into res.

For each of its children. Add them to stack from left to right.

Eventually reverse the res.

Time Complexity: O(V+E).

Space: O(V).

AC Java:

 1 /*
 2 // Definition for a Node.
 3 class Node {
 4     public int val;
 5     public List children;
 6 
 7     public Node() {}
 8 
 9     public Node(int _val) {
10         val = _val;
11     }
12 
13     public Node(int _val, List _children) {
14         val = _val;
15         children = _children;
16     }
17 };
18 */
19 class Solution {
20     public List postorder(Node root) {
21         List res = new ArrayList<>();
22         if(root == null){
23             return res;
24         }
25         
26         Stack stk = new Stack<>();
27         stk.push(root);
28         while(!stk.isEmpty()){
29             Node cur = stk.pop();
30             res.add(cur.val);
31             
32             for(Node child : cur.children){
33                 stk.push(child);    
34             }
35         }
36         
37         Collections.reverse(res);
38         return res;
39     }
40 }

类似N-ary Tree Preorder Traversal, Binary Tree Postorder Traversal.

你可能感兴趣的:(LeetCode 590. N-ary Tree Postorder Traversal)