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 叉树的后序遍历