fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. class Node
  8. {
  9. public:
  10. Node(int value): _value(value) {};
  11.  
  12. Node(Node* parent, int value): _value(value)
  13. {
  14. if (parent != nullptr)
  15. {
  16. parent->_children.push_back(this);
  17. }
  18. };
  19.  
  20. void Serialize()
  21. {
  22. Serialize(this);
  23. }
  24.  
  25.  
  26. private:
  27. int _value;
  28. vector<Node*> _children;
  29.  
  30. string GetValueAsString()
  31. {
  32. return std::to_string(_value);
  33. }
  34.  
  35. void Serialize(Node* node)
  36. {
  37. if (node == nullptr) return;
  38. cout << "<Node value=\"" << node->GetValueAsString() << "\">";
  39. if (node->_children.size() > 0)
  40. {
  41. cout << "<Children>";
  42. for(auto* child: node->_children)
  43. {
  44. Serialize(child);
  45. }
  46. cout << "</Children>";
  47. }
  48. cout << "</Node>";
  49. }
  50. };
  51.  
  52. int main() {
  53. // your code goes here
  54. Node root = Node(1);
  55. root.Serialize();
  56.  
  57. cout << endl << "------" << endl;
  58.  
  59. Node leaf1 = Node(&root, 123);
  60. Node leaf2 = Node(&root, 12345);
  61. Node leaf3 = Node(&root, 45);
  62.  
  63. root.Serialize();
  64. cout << endl << "------" << endl;
  65.  
  66. Node leaf1_1 = Node(&leaf1, 2);
  67. Node leaf1_2 = Node(&leaf1, 42);
  68.  
  69. Node leaf3_1 = Node(&leaf3, 69);
  70. Node leaf1_1_1 = Node(&leaf1_1, 3);
  71. root.Serialize();
  72. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
<Node value="1"></Node>
------
<Node value="1"><Children><Node value="123"></Node><Node value="12345"></Node><Node value="45"></Node></Children></Node>
------
<Node value="1"><Children><Node value="123"><Children><Node value="2"><Children><Node value="3"></Node></Children></Node><Node value="42"></Node></Children></Node><Node value="12345"></Node><Node value="45"><Children><Node value="69"></Node></Children></Node></Children></Node>