zoukankan      html  css  js  c++  java
  • 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:

    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]

    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<Node> children;
     6 
     7     public Node() {}
     8 
     9     public Node(int _val) {
    10         val = _val;
    11     }
    12 
    13     public Node(int _val, List<Node> _children) {
    14         val = _val;
    15         children = _children;
    16     }
    17 };
    18 */
    19 class Solution {
    20     public List<Integer> postorder(Node root) {
    21         List<Integer> res = new ArrayList<>();
    22         if(root == null){
    23             return res;
    24         }
    25         
    26         Stack<Node> 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 TraversalBinary Tree Postorder Traversal.

  • 相关阅读:
    Linux 安装nginx
    Linux服务器svn与项目同步
    Linux服务器安装svn
    Thinkphp5模板继承
    Thinkphp5 Route用法
    一键切换hosts文件
    lnmp手动新建虚拟机
    wamp 配置虚拟主机
    百度编辑器
    百度编辑器:上传图片二
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/11940478.html
Copyright © 2011-2022 走看看