Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.53 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5. //pendeklarasian struct sebuah tree awal
  6. struct Node{
  7. int data;
  8. Node *kiri;
  9. Node *kanan;
  10. };
  11.  
  12. //fungsi untuk menambahkan node baru
  13. void tambah(Node **root, int databaru)
  14. {
  15. //jika root masih kosong
  16. if((*root) == NULL)
  17. {
  18. //pembuatan node baru
  19. Node *baru;
  20. //pengalokasian memori dari node yang telah dibuat
  21. baru = new Node;
  22. //inisialisasi awal node yang baru dibuat
  23. baru->data = databaru;
  24. baru->kiri = NULL;
  25. baru->kanan = NULL;
  26. (*root) = baru;
  27. (*root)->kiri = NULL;
  28. (*root)->kanan = NULL;
  29. printf("Data bertambah!");
  30. }
  31. //jika data yang akan dimasukkan lebih kecil daripada elemen root, maka akan diletakkan di node sebelah kiri.
  32. else if(databaru<(*root)->data)
  33. tambah(&(*root)->kiri, databaru);
  34. //jika data yang akan dimasukkan lebih besar daripada elemen root, maka akan diletakkan di node sebelah kanan
  35. else if(databaru>(*root)->data)
  36. tambah(&(*root)->kanan, databaru);
  37. //jika saat dicek data yang akan dimasukkan memiliki nilai yang sama dengan data pada root
  38. else if(databaru == (*root)->data)
  39. printf("Data sudah ada!");
  40. }
  41.  
  42. //fungsi yang digunakan untuk mencetak tree secara preOrder
  43. void preOrder(Node *root)
  44. {
  45. if(root != NULL){
  46. printf("%d ", root->data);
  47. preOrder(root->kiri);
  48. preOrder(root->kanan);
  49. }
  50. }
  51.  
  52. //fungsi yang digunakan untuk mencetak tree secara inOrder
  53. void inOrder(Node *root)
  54. {
  55. if(root != NULL){
  56. inOrder(root->kiri);
  57. printf("%d ", root->data);
  58. inOrder(root->kanan);
  59. }
  60. }
  61.  
  62. //fungsi yang digunakan untuk mencetak tree secara postOrder
  63. void postOrder(Node *root)
  64. {
  65. if(root != NULL){
  66. postOrder(root->kiri);
  67. postOrder(root->kanan);
  68. printf("%d ", root->data);
  69. }
  70. }
  71.  
  72. //fungsi utama
  73. int main()
  74. {
  75. //deklarasikan variabel
  76. int pil, data;// c;
  77. Node *pohon; //*t;
  78. pohon = NULL; //inisialisasi node pohon
  79. //perulangan do-while
  80. do
  81. {
  82. system("cls"); //bersihkan layar
  83. printf("\t#PROGRAM TREE C++#");
  84. printf("\n\t==================");
  85. printf("\nMENU");
  86. printf("\n----\n");
  87. printf("1. Tambah\n");
  88. printf("2. Lihat pre-order\n");
  89. printf("3. Lihat in-order\n");
  90. printf("4. Lihat post-order\n");
  91. printf("5. Exit\n");
  92. printf("Pilihan : ");
  93. scanf("%d", &pil);
  94. switch(pil)
  95. {
  96. //jika pil bernilai 1
  97. case 1 :
  98. printf("\nINPUT : ");
  99. printf("\n-------");
  100. printf("\nData baru : ");
  101. scanf("%d", &data);
  102. //panggil fungsi untuk menambah node yang berisi data pada tree
  103. tambah(&pohon, data);
  104. break;
  105.  
  106. //jika pil bernilai 2
  107. case 2 :
  108. printf("\nOUTPUT PRE ORDER : ");
  109. printf("\n------------------\n");
  110. if(pohon!=NULL)
  111. //panggil fungsi untuk mencetak data secara preOrder
  112. preOrder(pohon);
  113. else
  114. printf("Masih kosong!");
  115. break;
  116.  
  117. //jika pil bernilai 3
  118. case 3 :
  119. printf("\nOUTPUT IN ORDER : ");
  120. printf("\n------------------\n");
  121. if(pohon!=NULL)
  122. //panggil fungsi untuk mencetak data secara inOrder
  123. inOrder(pohon);
  124. else
  125. printf("Masih kosong!");
  126. break;
  127.  
  128. //jika pil bernilai 4
  129. case 4 :
  130. printf("\nOUTPUT POST ORDER : ");
  131. printf("\n------------------\n");
  132. if(pohon!=NULL)
  133. //panggil fungsi untuk mencetak data secara postOrder
  134. postOrder(pohon);
  135. else
  136. printf("Masih kosong!");
  137. break;
  138. }
  139. _getch();
  140. }while(pil != 5); //akan diulang jika input tidak samadengan 5
  141. return EXIT_FAILURE;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement