Prvo dijete sljedeci brat


/ Published in: C++
Save to your folder(s)

2


Copy this code and paste it in your HTML
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. struct telement{
  5. int oznaka,dijete,brat;
  6. };
  7. struct tstablo{
  8. telement polje[1000];
  9. int korijen;
  10. };
  11. typedef int node;
  12. typedef tstablo* tree;
  13.  
  14. void initT(node x, tree stablo){
  15. for(int i=0;i<1000;i++){
  16. stablo->polje[i].oznaka=0;
  17. stablo->polje[i].dijete=-1;
  18. stablo->polje[i].brat=-1;
  19. }
  20. stablo->polje[x].oznaka=6;
  21. stablo->korijen=x;
  22. }
  23. int parentT(node n,tree stablo){
  24. if(n==stablo->korijen) {
  25. cout<<"Korijen ne moze imati roditelja!"<<endl;
  26. return -1;
  27. }
  28. for(int i=0;i<1000;i++){
  29. if(stablo->polje[i].dijete==n) return i;
  30. if(stablo->polje[i].brat==n) return parentT(i,stablo);
  31. }
  32.  
  33. }
  34. node firstchildT(node n,tree stablo){
  35. return stablo->polje[n].dijete;
  36. }
  37. node nextsiblingT(node n,tree stablo){
  38. return stablo->polje[n].brat;
  39. }
  40. node labelT(node n, tree stablo ){
  41. return stablo->polje[n].oznaka;
  42. }
  43. int rootT(tree stablo){
  44. return stablo->korijen;
  45. }
  46. void createT(node x,node n,tree stablo){
  47. if(!stablo->polje[n].oznaka){
  48. cout<<"Cvor ne postoji!"<<endl;
  49. return;
  50. }
  51. if(stablo->polje[n].dijete==-1) {
  52. stablo->polje[n].dijete=x;
  53. }
  54. else{
  55. n=stablo->polje[n].dijete;
  56. while(stablo->polje[n].brat!=-1) n=stablo->polje[n].brat;
  57. stablo->polje[n].brat=x;
  58. }
  59. stablo->polje[x].brat=-1;
  60. stablo->polje[x].dijete=-1;
  61. stablo->polje[x].oznaka=x*3;
  62. }
  63. void changelabelT(int x,node n, tree stablo){
  64. stablo->polje[n].oznaka=x;
  65. }
  66. void deleteT(node n,tree stablo){
  67. if(firstchildT(n,stablo)!=-1) deleteT(stablo->polje[n].dijete,stablo);
  68. if(nextsiblingT(n,stablo)!=-1) deleteT(stablo->polje[n].brat,stablo);
  69. stablo->polje[n].brat=-1;
  70. stablo->polje[n].dijete=-1;
  71. changelabelT(0,n,stablo);
  72. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.