Runtime: 152 ms, faster than69.24%ofC++online submissions forN-ary Tree Preorder Traversal.
Memory Usage: 32.4 MB, less than82.67%ofC++online submissions forN-ary Tree Preorder
Should think about iterate solving
LeetCode #705
Q.
Given an n-ary tree, return thepreordertraversal of its nodes' values.
For example, given a3-arytree:
N-진 트리에서, 전위수식으로 순회해서 값을 읽어봐라
예를들면, 3진트리는 아래와 같다:
Return its preorder traversal as:[1,3,5,6,2,4].
Note:
Recursive solution is trivial, could you do it iteratively?
노트:
재귀는 진부하고, 반복문으로 풀어봐라?
풀고나서 문제 옮겨적다가 봄..
//preorder means 전위수식 *12
// Process //1. Input root node pointer //2. Make returnVector //3. Put val in the returnVector //4. Iterate from begin to the end of children (*Node) // 4.1. Call recursivePreorder method //5. Return returnVector
// recursivePreorder //1. Input returnVector //2. Put val in the returnVector //3. Iterate from begin to the end (*Node) // 3.1. Call recursiveVector
// 처리과정
//1. 루트노드 입력받는다.
//2. 결과벡터 만들어둔다.
//3. 노드값 벡터에 넣는다.
//4. 노드 안의 벡터 전체 반복한다.
// 4.1. 재귀함수 콜한다.
//5. 채워진 결과벡터 반환한다.
// resursivePreorder (재귀함수)
//1. 노드와 리턴벡터 입력받는다.
//2. 노드값 벡터에 넣는다.
//3. 노드 안의 벡터 전체 반복한다.
// 3.1. 재귀함수 콜한다.
Code.. lemme see example code!!!
코드.. 예제코드를 보자!!!
class Solution {
public:
vector<int> preorder(Node* root) {
vector<int> returnVector;
if (root != 0) {
returnVector.push_back(root->val);
for (int i = 0; i < root->children.size(); ++i) {
recursivePreorder(root->children[i], returnVector);
}
}
return returnVector;
}
private:
void recursivePreorder(Node* node, vector<int>& returnVector) {
returnVector.push_back(node->val);
for (int i = 0; i < node->children.size(); ++i) {
recursivePreorder(node->children[i], returnVector);
}
}
};