题目,

这个代码跟迭代器没什么关系,就是先序遍历树,然后把遍历结果放到std::vector里面。
不过有了这个std::vector,就可以对std::vector进行迭代了。
实现思路也很简单,直接递归
程序代码如下,
#include <iostream>
#include <vector>
using namespace std;
template <typename T>
struct Node
{
T value;
Node *left{nullptr}, *right{nullptr}, *parent{nullptr};
Node(T value) : value(value) {}
Node(T value, Node<T> *left, Node<T> *right) : value(value), left(left), right(right) {
left->parent = right->parent = this;
}
// traverse the node and its children preorder
// and put all the results into `result`
void preorder_traversal(vector<Node<T>*>& result)
{
preorder_traversal_inner(result, this);
}
void preorder_traversal_inner(vector<Node<T>*>& result, Node<T>* node) {
if(!node) {
return;
}
result.push_back(node);
if(node->left) {
preorder_traversal_inner(result, node->left);
}
if(node->right) {
preorder_traversal_inner(result, node->right);
}
}
};
网友评论