LeetCode 590 N叉树的后序遍历

Posted zzw-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 590 N叉树的后序遍历相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode-cn.com/problems/n-ary-tree-postorder-traversal/

方法一递归法:先访问子节点,然后访问根。LeetCode代码:

/*
// Definition for a Node.
class Node {
public:
    int val;
    vector<Node*> children;

    Node() {}

    Node(int _val) {
        val = _val;
    }

    Node(int _val, vector<Node*> _children) {
        val = _val;
        children = _children;
    }
};
*/

class Solution {
public:
    vector<int>res;
    vector<int> postorder(Node* root) {
        if(root){
            int len=root->children.size();
            for(int i=0;i<len;++i){
                postorder(root->children[i]);
            }
            res.push_back(root->val);
        }
        return res;
    }
};

方法二:迭代法,思想类似于二叉树后续遍历的迭代法,将后序遍历转换类似前序遍历的遍历,与前序遍历不同的是是先访问根然后迭代访问根最右边节点,然后为右边的左边的一个节点,一直到访问完

最左边节点为止。然后反向输出,类似于二叉树的后序遍历的迭代法。二叉树的后序遍历可参考https://www.cnblogs.com/zzw-/p/13296052.html 。 此题 LeetCode代码如下:

vector<int>res;
        if(!root){
            return res;
        }
        stack<Node*>S;
        S.push(root);
        int len;
        while(!S.empty()){
           root=S.top();
           res.push_back(root->val); 
           S.pop();
           len=root->children.size();
           for(int i=0;i<len;++i){
               S.push(root->children[i]);
           }
           
        }
        len=res.size();
       
        int temp;
        for(int i=0;i<len/2;++i){
            temp=res[i];
            res[i]=res[len-i-1];
            res[len-i-1]=temp;
        }
        return res;
    }

 

以上是关于LeetCode 590 N叉树的后序遍历的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Algorithm 590. N 叉树的后序遍历

LeetCode 590 N叉树的后序遍历[dfs 树] HERODING的LeetCode之路

leetcode 590.N-ary Tree Postorder Traversal N叉树的后序遍历

Leetcode刷题100天—590.N叉树的后序遍历(二叉树)—day12

LeetCode 589. N 叉树的前序遍历(迭代写法) / 2049. 统计最高分的节点数目 / 590. N 叉树的后序遍历

java刷题--590N叉树的后序遍历