fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <array>
  4.  
  5. struct Node
  6. {
  7. int key;
  8. std::vector<Node> children;
  9. // Node() { key = -1; } // root
  10. Node(int k)
  11. {
  12. key = k;
  13. }
  14.  
  15. void Add(Node n)
  16. {
  17. children.push_back(n);
  18. }
  19.  
  20. void display()
  21. {
  22. std::cout << "My value is " << key << std::endl;
  23. std::cout << "My " << children.size() << " kid(s) are : " << std::endl;
  24. for( auto n : children)
  25. {
  26. n.display();
  27. }
  28. }
  29.  
  30. };
  31.  
  32. int main()
  33. {
  34. constexpr int numNode = 5; // for
  35. std::array<int, numNode> numbers = { 4, -1, 4, 1, 1 };
  36. std::vector<Node> nodesStorage;
  37.  
  38. for (int i = 0 ; i < numNode ; i++)
  39. {
  40. nodesStorage.push_back(Node(i));
  41. }
  42. nodesStorage.push_back(Node(-1));
  43.  
  44. for (int i = 0 ; i< numNode ; i++)
  45. {
  46. if(numbers[i] == -1) // the root
  47. {
  48. nodesStorage[numNode].Add(nodesStorage[i]);
  49. }
  50. else
  51. {
  52. nodesStorage[numbers[i]].Add(nodesStorage[i]);
  53. }
  54. }
  55.  
  56. nodesStorage[1].display();
  57. nodesStorage[numNode].display();
  58.  
  59. return 0;
  60.  
  61. }
  62.  
  63.  
  64.  
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
My value is 1
My 2 kid(s) are : 
My value is 3
My 0 kid(s) are : 
My value is 4
My 2 kid(s) are : 
My value is 0
My 0 kid(s) are : 
My value is 2
My 0 kid(s) are : 
My value is -1
My 1 kid(s) are : 
My value is 1
My 0 kid(s) are :