当前位置: 代码迷 >> 综合 >> leetcode 590 N-ary Tree Postorder Traversal(N叉树的后序遍历)
  详细解决方案

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

热度:70   发布时间:2023-11-17 01:18:38.0

题目要求

给定一个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叉树的前序遍历)

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

  相关解决方案