Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.25 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.  
  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. EXIT\n");
  143. printf("7. Pilihan :");
  144. scanf("%d", &pil);
  145. switch(pil)
  146. {
  147. case 1:
  148. printf("\nINPUT : ");
  149. printf("\n======================\n");
  150. printf("Data Baru : ");
  151. scanf("%d", &data);
  152. tambah (&pohon, data );
  153. printf("\n======================\n");
  154. break;
  155.  
  156. case 2:
  157. printf("\nOUTPUT PRE-ORDER : ");
  158. printf("\n======================\n");
  159. if (pohon!=NULL)
  160. {
  161. preOrder(pohon);
  162. printf("\n======================\n");
  163. }
  164.  
  165. else
  166. printf("Masih Kosong !");
  167. break;
  168.  
  169. case 3:
  170. printf("\nOUTPUT in-ORDER : ");
  171. printf("\n======================\n");
  172. if (pohon!=NULL)
  173. {
  174. inOrder(pohon);
  175. printf("\n======================\n");
  176. }
  177. else
  178. printf("Masih Kosong !");
  179. break;
  180.  
  181. case 4:
  182. printf("\nOUTPUT POST-ORDER : ");
  183. printf("\n======================\n");
  184. if (pohon!=NULL)
  185. {
  186. postOrder(pohon);
  187. printf("\n======================\n");
  188. }
  189. else
  190. printf("Masih Kosong !");
  191.  
  192.  
  193. break;
  194.  
  195. case 5:
  196. printf("\n output search : ");
  197. if(pohon!=NULL)
  198. {
  199. printf("\nPRE ORDER : ");
  200. preOrder(pohon); //panggil fungsi
  201. printf("\nIN ORDER : ");
  202. inOrder(pohon); //panggil fungsi
  203. printf("\nPOST ORDER : ");
  204. postOrder(pohon); //panggil fungsi
  205. printf("\n\nPENCARIAN DATA");
  206. printf
  207. ("\n masukan data yg dicari:");
  208. scanf("%d", &data);
  209. search(&pohon, data);
  210.  
  211. }
  212. else
  213. printf("masih kosong");
  214. break;
  215.  
  216. case 6:
  217. break;
  218. }getch();
  219. }while(pil!=7);
  220. return 0;
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement