Advertisement
crisfast

Tema6 ASD

Nov 23rd, 2014
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct nod{int info;
  6. nod*st,*dr;};
  7.  
  8. nod *rad;
  9. void adaugare(nod *&rad,int x)
  10. {
  11. if(rad==0){nod *p=new nod;
  12. p->info=x;
  13. p->st=0;
  14. p->dr=0;
  15. rad=p;}
  16. else if(x<rad->info) adaugare(rad->st,x);
  17. else adaugare(rad->dr,x);
  18. }
  19. void rsd(nod *c)
  20. {if(c)
  21. {cout<<c->info<<" ";
  22. rsd(c->st);
  23. rsd(c->dr);
  24. }
  25. }
  26. void srd(nod *c)
  27. {if(c)
  28. {srd(c->st);
  29. cout<<c->info<<" ";
  30. srd(c->dr);
  31. }
  32. }
  33. void sdr(nod *c)
  34. {if(c)
  35. {srd(c->st);
  36. srd(c->dr);
  37. cout<<c->info<<" ";
  38. }
  39. }
  40.  
  41. int main()
  42. {
  43. int n,x,i;
  44. cout<<"Numar elemente din arbore: ";
  45. cin>>n;
  46. for(i=1;i<=n;i++)
  47. {
  48. cin>>x;
  49. adaugare(rad,x);
  50. }
  51. cout<<"Parcurgere RSD: "; rsd(rad); cout<<endl;
  52. cout<<"Parcurgere SRD: "; srd(rad); cout<<endl;
  53. cout<<"Parcurgere SDR: "; sdr(rad); cout<<endl;
  54. }
  55. -------------------------------------------------------------------------
  56. #include <iostream>
  57.  
  58. using namespace std;
  59.  
  60. struct nod
  61. {int info;
  62. nod*st,*dr;
  63. };
  64.  
  65. nod *v;
  66. int n,k,s;
  67.  
  68. void inserare(nod *&c,int k)
  69. {if(c)
  70. if(c->info==k)
  71. cout<<"Numarul exista deja! "<<endl;
  72. else
  73. if(c->info<k)
  74. inserare(c->dr,k);
  75. else
  76. inserare(c->st,k);
  77.  
  78. else
  79. {c=new nod;
  80. c->info=k;
  81. c->st=c->dr=0;}
  82. }
  83. void srd(nod *c)
  84. {if(c)
  85. {cout<<c->info<<" ";
  86. srd(c->st);
  87. srd(c->dr);
  88. }
  89. }
  90.  
  91. int cautare(nod *c,int k)
  92. {if(c)
  93. if(c->info==k)
  94. return 1;
  95. else
  96. if(c->info<k)
  97. cautare(c->dr,k);
  98. else
  99. cautare(c->st,k);
  100. else
  101. return 0;
  102. }
  103. int maxim(nod *c)
  104. {
  105. int maxim;
  106. while(c->dr)
  107. {
  108. c=c->dr;
  109. }
  110. maxim=c->info;
  111. cout<<maxim;
  112. }
  113. void doi_sub(nod* &c,nod* &f)
  114. {nod *aux;
  115. if(f->dr)
  116. doi_sub(c,f->dr);
  117. else
  118. {c->info=f->info;
  119. aux=f;
  120. f=f->st;
  121. delete aux;
  122. }
  123. }
  124. void stergere(nod *&c,int s)
  125. {nod *aux,*f;
  126. if(c)
  127. if(c->info==s)
  128. if(c->st==0&&c->dr==0)
  129. {delete c;
  130. c=0;
  131. }
  132. else
  133. if(c->st==0)
  134. {aux=c->dr;
  135. delete c;
  136. c=aux;}
  137. else
  138. if(c->dr==0)
  139. {aux=c->st;
  140. delete c;
  141. c=aux;}
  142. else
  143. doi_sub(c,c->st);
  144.  
  145. else
  146. if(c->info<s)
  147. stergere(c->dr,s);
  148. else
  149. stergere(c->st,s);
  150.  
  151. else
  152. cout<<"elementul nu exista ";
  153. }
  154. int main()
  155. {
  156. cout<<"numar noduri: ";
  157. cin>>n;
  158. for(int i=1;i<=n;i++)
  159. {cout<<"valoare: ";
  160. cin>>k;
  161. inserare(v,k);
  162. }
  163. srd(v);
  164.  
  165. cout<<"Element cautat: ";
  166. cin>>k;
  167. if (cautare(v,k)) cout<<"Exista!"<<endl;
  168. else cout<<"Nu exista!"<<endl;
  169.  
  170. maxim(v);
  171. cout<<endl;
  172.  
  173. cout<<"Element sters: ";
  174. cin>>s;
  175. stergere(v,s);
  176. srd(v);
  177. }
  178. -------------------------------------------------------------------------------------
  179. #include <iostream>
  180.  
  181. using namespace std;
  182.  
  183. struct nod
  184. {int info;
  185. nod*st,*dr;
  186. };
  187.  
  188. nod *v;
  189. int i,n,m,s[100];
  190. void inserare(nod *&c,int k)
  191. {if(c)
  192. if(c->info==k)
  193. cout<<"Numarul exista deja! "<<endl;
  194. else
  195. if(c->info<k)
  196. inserare(c->dr,k);
  197. else
  198. inserare(c->st,k);
  199.  
  200. else
  201. {c=new nod;
  202. c->info=k;
  203. c->st=c->dr=0;}
  204. }
  205. void srd(nod *c)
  206. {if(c)
  207. {srd(c->st);
  208. cout<<c->info<<" ";
  209. srd(c->dr);
  210. }
  211. }
  212. int main()
  213. {
  214.  
  215. cout<<"Numere de sortat: ";
  216. cin>>n;
  217. for(i=1;i<=n;i++)
  218. {
  219. cout<<"Numarul "<<i<<": ";
  220. cin>>s[i];
  221. }
  222. for(i=1;i<=n;i++)
  223. {
  224. inserare(v,s[i]);
  225. }
  226. srd(v);
  227. }
  228. -----------------------------------------------------------------------------------------------------------
  229. #include <iostream>
  230.  
  231. using namespace std;
  232.  
  233. struct nod
  234. {int info;
  235. nod*st,*dr;
  236. };
  237.  
  238. nod *v;
  239. int i,k1,k2,m,n,s[100];
  240.  
  241. void inserare(nod *&c,int k)
  242. {if(c)
  243. if(c->info==k)
  244. cout<<"Numarul exista deja! "<<endl;
  245. else
  246. if(c->info<k)
  247. inserare(c->dr,k);
  248. else
  249. inserare(c->st,k);
  250.  
  251. else
  252. {c=new nod;
  253. c->info=k;
  254. c->st=c->dr=0;}
  255. }
  256. void srd(nod *c)
  257. {if(c)
  258. {srd(c->st);
  259. cout<<c->info<<" ";
  260. srd(c->dr);
  261. }
  262. }
  263. void verificare(nod *c)
  264. {if(c)
  265. {verificare(c->st);
  266. if(c->info>k1 && c->info<k2) cout<<c->info<<" ";
  267. verificare(c->dr);
  268. }
  269. }
  270. int main()
  271. {
  272. cout<<"Numere noduri: ";
  273. cin>>n;
  274. cout<<"k1= ";
  275. cin>>k1;
  276. cout<<"k2= ";
  277. cin>>k2;
  278. for(i=1;i<=n;i++)
  279. {
  280. cout<<"Numar: ";
  281. cin>>m;
  282. inserare(v,m);
  283. }
  284. srd(v);
  285. cout<<endl;
  286. verificare(v);
  287. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement