題目:
給定一個 N 叉樹踢代,返回其節(jié)點值的后序遍歷盲憎。
例如,給定一個 3叉樹 :
image.png
返回其后序遍歷: [5,6,3,2,4,1].
說明: 遞歸法很簡單胳挎,你可以使用迭代法完成此題嗎?
鏈接:https://leetcode-cn.com/problems/n-ary-tree-postorder-traversal
思路:
1饼疙、后序遍歷的順序是【左右根】,那就遞歸的按照先子樹后根節(jié)點的順序進行遍歷
Python代碼:
"""
# Definition for a Node.
class Node(object):
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""
class Solution(object):
def __init__(self):
self.ret = []
def postorder(self, root):
"""
:type root: Node
:rtype: List[int]
"""
if not root:
return None
for child in root.children:
self.postorder(child)
self.ret.append(root.val)
return self.ret
C++代碼:
/*
// 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> ret;
vector<int> postorder(Node* root) {
if (root == nullptr) {
return ret;
}
for (auto child : root->children){
postorder(child);
}
ret.push_back(root->val);
return ret;
}
};