题目要求
给定一个N叉树,返回节点值的后序遍历。如3叉树为例子。结果为:563241
解题思路
和二叉树的后序遍历相似,在这里我们每次首先递归的去搜索子节点,然后保存父节点的值,这里边需要注意的是由于子节点个数多于2个,所以要使用for(auto child:root->children) 保证每个子节点都遍历到。
主要代码 c++
/* // 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!=NULL){
for(auto child:root->children) // 先遍历孩子节点postorder(child); res.push_back(root->val); // 后保存父节点的值}return res;}
private:vector<int>res;
};
python法
""" # Definition for a Node. class Node(object):def __init__(self, val, children):self.val = valself.children = children """
class Solution(object):def postorder(self, root):""":type root: Node:rtype: List[int]"""if root is None:return rootstack = [root]res = []while stack :node = stack.pop()for child in node.children[::1]:stack.append(child)res.insert(0,node.val)return res
划重点:
有关N叉树的重点是如何遍历所有的孩子节点,掌握这个,其他的问题可以引用二叉树的思想去解答
相似题目:
解答:leetcode 429 N-ary Tree Level Order Traversal(N叉树的层序遍历)
解答:leetcode 589 N-ary Tree Preorder Traversal(N叉树的前序遍历)