本文主要是介绍590. N-ary Tree Postorder Traversal,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
590. N叉树的后序遍历
给定一个 N 叉树,返回其节点值的后序遍历。
例如,给定一个
3叉树
:
返回其后序遍历:
[5,6,3,2,4,1]
.
说明: 递归法很简单,你可以使用迭代法完成此题吗?
解法一
/*
// Definition for a Node.
class Node {
public:int val;vector<Node*> children;Node() {}Node(int _val, vector<Node*> _children) {val = _val;children = _children;}
};
*/
class Solution {
public:vector<int> postorder(Node* root) {if(!root) return {};vector<int> res;stack<Node*> st;st.push(root);while (!st.empty()) {Node* temp = st.top();st.pop();res.insert(res.begin(), temp->val);for(Node* chd : temp->children) st.push(chd);}return res;}
};
思路:
迭代法。与前序遍历类似,只是在结果保存时将其反序存储。入栈顺序是从左到右,出栈顺序就是从右到左,那么原来前序遍历的顺序是中-右-左,将其反序输出,就是左-右-中的后序遍历结果。
所以这个问题的关键就是,前序遍历与后序遍历之间的反序关系。
这篇关于590. N-ary Tree Postorder Traversal的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!