Advertisement
Guest User

Untitled

a guest
May 2nd, 2017
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <iostream>
  3. #define EMPTY -1
  4.  
  5. using namespace std;
  6.  
  7. struct Node //struktura - vrchol
  8. {
  9. int key;
  10. struct Node* left, *right;
  11. };
  12. Node* newNode(int key) //pomocná funkce - vytvoří nový vrchol (alokuje mu paměť)
  13. {
  14. Node* temp = new Node;
  15. temp->key = key;
  16. temp->left = temp->right = NULL;
  17. return (temp);
  18. }
  19.  
  20. void serializace(Node *root, FILE *data) //serializace - uložení struktury stromu do souboru
  21. {
  22. if (root == NULL)
  23. {
  24. fprintf(data, "%d ", EMPTY);
  25. return;
  26. }
  27.  
  28.  
  29. fprintf(data, "%d ", root->key);
  30. serializace(root->left, data);
  31. serializace(root->right, data);
  32. }
  33.  
  34. void deserializace(Node *&root, FILE *data) //deserializace - ze souboru (kde je ta struktura toho stromu), vytvoří strom
  35. {
  36. int value;
  37. if ( !fscanf(data, "%d ", &value) || value == EMPTY)
  38. return;
  39. root = newNode(value);
  40. deserializace(root->left, data);
  41. deserializace(root->right, data);
  42. }
  43. void inorder(Node *root) //moje metoda, oveřuje že se deserializace povedla - vnitřní průchod stromem (seřazení klíčů od nejmenšího),
  44. {
  45. if (root)
  46. {
  47. inorder(root->left);
  48. cout << root->key << endl;
  49. inorder(root->right);
  50. }
  51. }
  52. int main()
  53. {
  54. struct Node *root = newNode(17); //vytvoření stromu (potom budu muset náhodně generovat) - teď neřeším
  55. root->left = newNode(7);
  56. root->right = newNode(39);
  57. root->left->left = newNode(3);
  58. root->left->right = newNode(11);
  59. root->left->right->left = newNode(10);
  60.  
  61. FILE *data = fopen("tree.txt", "w");
  62. if (data == NULL)
  63. {
  64. cout << "Nelze otevrit soubor" << endl;
  65. return 0;
  66. }
  67. serializace(root, data);
  68. fclose(data);
  69.  
  70. Node *root1 = NULL;
  71. data = fopen("tree.txt", "r");
  72. deserializace(root1, data);
  73.  
  74. cout << "Pruchod stromem (od nejmensiho - overeni stromu): " << endl;
  75. inorder(root1);
  76.  
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement