木又连续日更第11天(1/138)
木又的第151篇leetcode解题报告
二叉树
类型第41篇解题报告
leetcode第589题:N叉树的前序遍历
https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/
【题目】
给定一个 N 叉树,返回其节点值的前序遍历。
例如,给定一个 3叉树
:
返回其前序遍历: [1,3,5,6,2,4]
。
【思路】
和二叉树前序遍历类似,先访问根节点,再从左往右递归遍历孩子节点。
【代码】
python版本
"""
# Definition for a Node.
class Node(object):
def __init__(self, val, children):
self.val = val
self.children = children
"""
class Solution(object):
def preorder(self, root):
"""
:type root: Node
:rtype: List[int]
"""
if not root:
return []
res = []
self.helper(root, res)
return res
def helper(self, node, res):
res.append(node.val)
for child in node.children:
self.helper(child, res)
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> preorder(Node* root) {
vector<int> res;
if(!root)
return res;
helper(root, res);
return res;
}
void helper(Node* node, vector<int>& res){
res.push_back(node->val);
for(auto child: node->children)
helper(child, res);
}
};