Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. const int MAX_SIZE = 100;
  5.  
  6. struct Node
  7. {
  8. int key;
  9. Node *left, *right;
  10. };
  11.  
  12. class ParentTree
  13. {
  14. private:
  15. int n;
  16. Node *root;
  17. int parent[MAX_SIZE];
  18. Node* created[MAX_SIZE];
  19. Node* newNode(int key);
  20. void createNode(int i);
  21.  
  22. public:
  23. ParentTree();
  24. Node* createTree();
  25. void printInorder(Node* root);
  26. //void enterParentArray();
  27. Node* getRoot();
  28. };
  29.  
  30. ParentTree::ParentTree()
  31. {
  32. cout<<"Enter length of nodes array: ";
  33. cin>>n;
  34. cout<<"Enter nodes array:"<<endl;
  35. for(int i = 0; i < n; i++){
  36. cout<<"Node on index " << i <<": ";
  37. cin>>parent[i];
  38. }
  39. for (int i=0; i<n; i++)
  40. created[i] = NULL;
  41. }
  42.  
  43. Node* ParentTree::newNode(int key)
  44. {
  45. Node *temp = new Node;
  46. temp->key = key;
  47. temp->left = temp->right = NULL;
  48. return (temp);
  49. }
  50.  
  51. void ParentTree::createNode(int i)
  52. {
  53. if (created[i] != NULL)
  54. return;
  55.  
  56. created[i] = newNode(i);
  57.  
  58. if (parent[i] == -1)
  59. {
  60. root = created[i];
  61. return;
  62. }
  63.  
  64. if (created[parent[i]] == NULL)
  65. createNode(parent[i]);
  66.  
  67. Node *p = created[parent[i]];
  68.  
  69. if (p->left == NULL)
  70. p->left = created[i];
  71. else
  72. p->right = created[i];
  73. }
  74.  
  75. Node* ParentTree:: createTree()
  76. {
  77. //for (int i=0; i<n; i++)
  78. // created[i] = NULL;
  79. //enterParentArray();
  80. //root = NULL;
  81. for (int i=0; i<n; i++)
  82. createNode(i);
  83.  
  84. return root;
  85. }
  86.  
  87. Node* ParentTree::getRoot()
  88. {
  89. return root;
  90. }
  91.  
  92. void ParentTree::printInorder(Node* root)
  93. {
  94. if (root == NULL)
  95. {
  96. return;
  97. }
  98. printInorder(root->left);
  99. cout << root->key << " ";
  100. printInorder(root->right);
  101.  
  102. }
  103.  
  104.  
  105. int main()
  106. {
  107. ParentTree tree;
  108. tree.createTree();
  109. tree.printInorder(tree.getRoot());
  110. return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement