Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #include<fstream>
  3. using namespace std;
  4. ifstream fin("arbore.in");
  5. int v[100],i,x,n,j,ok,r,h,c,g,t[100],k,l;
  6.  
  7. void creare()
  8. {
  9. fin>>n;
  10. for(i=1;i<=n;i++)
  11. {
  12. fin>>g;
  13. v[i]=g;
  14. }
  15. }
  16. int radacina()
  17. { for(i=1;i<=n;i++)
  18. if(v[i]==0)
  19. {
  20. r=i;
  21. cout<<"Nodul "<<i<<" este radacina"<<endl;
  22. }
  23.  
  24. }
  25. int frunza()
  26. { ok=1;
  27. for(j=1,k=1;j<=n;j++)
  28. {for(i=1;i<=n;i++)
  29. if(j==v[i] )
  30. ok=0;
  31. if(ok && j!=r )
  32. {cout<<"Nodul "<<j<<" este frunza"<<endl;
  33. t[k]=j;}
  34. if(ok==0 && j!=r )
  35. cout<<"Nodul "<<j<<" este nod neterminal"<<endl;
  36. ok=1; }
  37. }
  38. void descendenti_directi()
  39. {
  40. for(i=1;i<=n;i++)
  41. if(v[i]==x)
  42. cout<<i<<" ";
  43. }
  44. int descendenti(int p)
  45. { int a;
  46. if(v[p]==0 && p!=r)
  47. return 1;
  48. else
  49. {for(i=1;i<=n;i++)
  50. if(v[i]==p)
  51. {a=i;
  52. cout<<a<<" ";}
  53. descendenti(a);}
  54.  
  55. }
  56.  
  57. void inaltime(int x,int l)
  58. { //incepem de la radacina si parcurgem fiecare nod neparcurs, daca nodul e bun inlocuim inaltimea
  59. if(l>h) //lungimea curenta
  60. h=l;
  61. for(int i=1;i<=n;i++)
  62. if(v[i]==x)
  63. inaltime(i,l+1);
  64. }
  65.  
  66.  
  67.  
  68. int main()
  69. {
  70. creare();
  71. radacina();
  72. frunza();
  73. cin>>x;
  74. cout<<"Descendentii directi sunt: ";
  75. descendenti_directi();
  76. cout<<endl<<"Descendentii lui x sunt: ";
  77. descendenti(x);
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement