Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.83 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <iostream>
  5.  
  6. struct Node
  7. {
  8. int data;
  9. Node *kiri;
  10. Node *kanan;
  11. };
  12.  
  13. void tambah(Node **root, int databaru)
  14. {
  15. if((*root) == NULL)
  16. {
  17. Node *baru;
  18. baru = new Node;
  19. baru->data=databaru;
  20. baru->kiri=NULL;
  21. baru->kanan=NULL;
  22. (*root)=baru;
  23. (*root)->kiri=NULL;
  24. (*root)->kanan=NULL;
  25. printf("Data Ditambah !");
  26. }
  27. else if(databaru<(*root)->data)
  28. tambah(&(*root)->kiri,databaru);
  29. else if(databaru>(*root)->data)
  30. tambah(&(*root)->kanan,databaru);
  31. else if (databaru==(*root)->data)
  32. printf("Data Sudah Ada !");
  33. }
  34.  
  35. void preOrder(Node *root)
  36. {
  37. if(root!=NULL)
  38. {
  39. printf(" %d ", root->data);
  40. preOrder(root->kiri);
  41. preOrder(root->kanan);
  42. }
  43. }
  44.  
  45. void inOrder(Node *root)
  46. {
  47. if(root!=NULL)
  48. {
  49. inOrder(root->kiri);
  50. printf("% d", root->data);
  51. inOrder(root->kanan);
  52. }
  53. }
  54.  
  55. void postOrder(Node *root)
  56. {
  57. if(root!=NULL)
  58. {
  59. postOrder(root->kiri);
  60. postOrder(root->kanan);
  61. printf("% d", root->data);
  62. }
  63. }
  64. void cari_terbesar(Node *p)
  65. {
  66. if(p==NULL)
  67. {
  68. return;
  69. }
  70. else
  71. {
  72. if(p->kanan==NULL)
  73. {
  74. printf("%d",p->data);
  75. return;
  76. }
  77. else
  78. {
  79. cari_terbesar(p->kanan);
  80. return;
  81. }
  82. }
  83. }
  84. void cari_terkecil(Node *p)
  85. {
  86. if(p==NULL)
  87. {
  88. return;
  89. }
  90. else
  91. {
  92. if(p->kiri==NULL)
  93. {
  94. printf("%d",p->data);
  95. return;
  96. }
  97. else
  98. {
  99. cari_terbesar(p->kiri);
  100. return;
  101. }
  102. }
  103. }
  104.  
  105. void search(Node **root, int cari)
  106. {
  107. if((*root) == NULL)
  108. {
  109. printf("Data tidak ditemukan!");
  110. }
  111. //jika data yang dicari lebih kecil dari isi root
  112. else if(cari < (*root)->data)
  113. search(&(*root)->kiri,cari);
  114. //jika data yang dicari lebih besar dari isi root
  115. else if(cari > (*root)->data)
  116. search(&(*root)->kanan,cari);
  117. //jika data yang dicari sama dengan isi dari variabel root
  118. else if(cari == (*root)->data)
  119. printf("Data ditemukan!");
  120. }
  121.  
  122.  
  123. int main()
  124. {
  125. int pil, data, cari;
  126. Node *pohon;
  127. pohon=NULL;
  128. do
  129. {
  130. system ("cls");
  131. printf("\t\n==================================================\n");
  132. printf("\t\tPROGRAM TREE\n");
  133. printf("\n\tNADYA NURFADILLAH/09031181823131");
  134. printf("\t\n==================================================\n");
  135. printf("\nMenu");
  136. printf("\n------\n");
  137. printf("1. Tambah\n");
  138. printf("2. Lihat PreOrder\n");
  139. printf("3. Lihat InOrder\n");
  140. printf("4. Lihat PostOrder\n");
  141. printf("5 Search \n");
  142. printf("6 Search min \n");
  143. printf("7 Search max \n");
  144. printf("8. EXIT\n");
  145. printf("9. Pilihan :");
  146. scanf("%d", &pil);
  147. switch(pil)
  148. {
  149. case 1:
  150. printf("\nINPUT : ");
  151. printf("\n======================\n");
  152. printf("Data Baru : ");
  153. scanf("%d", &data);
  154. tambah (&pohon, data );
  155. printf("\n======================\n");
  156. break;
  157.  
  158. case 2:
  159. printf("\nOUTPUT PRE-ORDER : ");
  160. printf("\n======================\n");
  161. if (pohon!=NULL)
  162. {
  163. preOrder(pohon);
  164. printf("\n======================\n");
  165. }
  166.  
  167. else
  168. printf("Masih Kosong !");
  169. break;
  170.  
  171. case 3:
  172. printf("\nOUTPUT in-ORDER : ");
  173. printf("\n======================\n");
  174. if (pohon!=NULL)
  175. {
  176. inOrder(pohon);
  177. printf("\n======================\n");
  178. }
  179. else
  180. printf("Masih Kosong !");
  181. break;
  182.  
  183. case 4:
  184. printf("\nOUTPUT POST-ORDER : ");
  185. printf("\n======================\n");
  186. if (pohon!=NULL)
  187. {
  188. postOrder(pohon);
  189. printf("\n======================\n");
  190. }
  191. else
  192. printf("Masih Kosong !");
  193.  
  194.  
  195. break;
  196.  
  197. case 5:
  198. printf("\n output search : ");
  199. if(pohon!=NULL)
  200. {
  201. printf("\nPRE ORDER : ");
  202. preOrder(pohon); //panggil fungsi
  203. printf("\nIN ORDER : ");
  204. inOrder(pohon); //panggil fungsi
  205. printf("\nPOST ORDER : ");
  206. postOrder(pohon); //panggil fungsi
  207. printf("\n\nPENCARIAN DATA");
  208. printf
  209. ("\n masukan data yg dicari:");
  210. scanf("%d", &data);
  211. search(&pohon, data);
  212.  
  213. }
  214. else
  215. printf("masih kosong");
  216. break;
  217.  
  218.  
  219. case 6:
  220. printf("\n search min : ");
  221. if(pohon!=NULL)
  222. {
  223. cari_terkecil(pohon);
  224. }
  225. else
  226. printf("masih kosong");
  227. break;
  228.  
  229. case 7:
  230. printf("\n search max : ");
  231. if(pohon!=NULL)
  232. {
  233. cari_terbesar(pohon);
  234. }
  235. else
  236. printf("masih kosong");
  237. break;
  238.  
  239.  
  240. case 8:
  241. break;
  242. }getch();
  243. }while(pil!=8);
  244. return 0;
  245. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement