Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vector>
- #include <memory>
- #include <iostream>
- struct node
- {
- std::vector<std::shared_ptr<node>> children;
- };
- int serialize_tree(std::vector<std::vector<int>> &result, std::shared_ptr<node> root)
- {
- int index = result.size();
- result.push_back({});
- for (std::shared_ptr<node> child : root->children)
- {
- result.at(index).push_back(serialize_tree(result, child));
- }
- return index;
- }
- std::shared_ptr<node> generate_tree(int depth)
- {
- std::shared_ptr<node> root = std::make_shared<node>();
- for (int i = 0; i < depth; i++)
- {
- root->children.push_back(generate_tree(depth - 1));
- }
- return root;
- }
- void print_serialized_tree(std::vector<std::vector<int>> tree)
- {
- for (size_t i = 0; i < tree.size(); i++)
- {
- for (size_t j = 0; j < tree[i].size(); j++)
- {
- if (j != 0)
- std::cout << ' ';
- std::cout << tree[i][j];
- }
- std::cout << std::endl;
- }
- }
- int main()
- {
- std::shared_ptr<node> root = generate_tree(5);
- std::vector<std::vector<int>> result;
- serialize_tree(result, root);
- print_serialized_tree(result);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement