原题链接:Leecode 589. N 叉树的前序遍历
栈
/*
// 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> preorder(Node* root) {
if(!root) return {};
vector<int> res;
stack<Node* > st;
st.push(root);
while(!st.empty())
{
root=st.top(); st.pop();
if(root)
{
res.push_back(root->val);
for(int i=root->children.size()-1;i>=0;i--)
st.push(root->children[i]);
}
}
return res;
}
};
递归
/*
// 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:
void pre(Node* root,vector<int>& v)
{
v.push_back(root->val);
for(int i=0;i<root->children.size();i++)
{
pre(root->children[i],v);
}
}
vector<int> preorder(Node* root) {
if(!root) return {};
vector<int> res;
pre(root,res);
return res;
}
};