Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. struct tree{
  7. tree* left;
  8. tree* right;
  9. int value;
  10.  
  11. int size;
  12. };
  13.  
  14. void add(int sValue, tree* root){
  15. if(root->size == 0){
  16. root->size++;
  17. root->value = sValue;
  18. return;
  19. }
  20.  
  21. tree* var = new tree();
  22. var->value = sValue;
  23.  
  24. int n = root->size+1;
  25. std::vector<bool> path;
  26.  
  27. while(n > 1){
  28. path.push_back(n%2);
  29. n/=2;
  30. }
  31.  
  32. tree* head = root;
  33.  
  34. for(int i = path.size()-1; i >= 1; i--){
  35. if(path[i] == 0){
  36. head = head->left;
  37. }else{
  38. head = head->right;
  39. }
  40. }
  41.  
  42. if(path[0] == 0){
  43. head->left = var;
  44. }else{
  45. head->right = var;
  46. }
  47.  
  48. root->size++;
  49. }
  50.  
  51. void display(tree* root, tree* head){
  52. if(root->size != 0){
  53. std::cout << "Rodzic[" << head->value << "]" << std::endl;
  54.  
  55. if(head->left != NULL){
  56. std::cout << "L[" << head->left->value << "]" << std::endl;
  57. }
  58.  
  59. if(head->right != NULL){
  60. std::cout << "R[" << head->right->value << "]" << std::endl;
  61. }
  62.  
  63. if(head->left != NULL){
  64. display(root, head->left);
  65. }
  66.  
  67. if(head->right != NULL){
  68. display(root, head->right);
  69. }
  70. }
  71. }
  72.  
  73. void show(tree* root){
  74. display(root, root);
  75. }
  76.  
  77. int main(){
  78. tree* drzewo = new tree();
  79. drzewo->left = NULL;
  80. drzewo->right = NULL;
  81. drzewo->size = 0;
  82.  
  83. add(7, drzewo);
  84. add(5, drzewo);
  85. add(9, drzewo);
  86. add(2, drzewo);
  87. add(4, drzewo);
  88. add(6, drzewo);
  89. add(1, drzewo);
  90.  
  91. show(drzewo);
  92.  
  93. return 0;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement