589. N叉树的前序遍历
解法一
/*
// 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:
void build(vector<int>& vec, Node* root) {
if(!root) return;
vec.push_back(root->val);
for(Node* chd : root->children) build(vec, chd);
}
vector<int> preorder(Node* root) {
vector<int> res;
build(res, root);
return res;
}
};
解法二
/*
// 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) {
if(!root) return {};
vector<int> res;
stack<Node*> st;
st.push(root);
while(!st.empty()) {
Node* temp = st.top();
st.pop();
res.push_back(temp->val);
for(auto p = temp->children.rbegin(); p != temp->children.rend(); p++) {
st.push(*p);
}
}
return res;
}
};
思路:
解法一,递归法。
解法二,迭代法。
2019/06/03 22:35