Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #include<fstream>
- using namespace std;
- ifstream fin("arbore.in");
- int v[100],i,x,n,j,ok,r,h,c,g,t[100],k,l;
- void creare()
- {
- fin>>n;
- for(i=1;i<=n;i++)
- {
- fin>>g;
- v[i]=g;
- }
- }
- int radacina()
- { for(i=1;i<=n;i++)
- if(v[i]==0)
- {
- r=i;
- cout<<"Nodul "<<i<<" este radacina"<<endl;
- }
- }
- int frunza()
- { ok=1;
- for(j=1,k=1;j<=n;j++)
- {for(i=1;i<=n;i++)
- if(j==v[i] )
- ok=0;
- if(ok && j!=r )
- {cout<<"Nodul "<<j<<" este frunza"<<endl;
- t[k]=j;}
- if(ok==0 && j!=r )
- cout<<"Nodul "<<j<<" este nod neterminal"<<endl;
- ok=1; }
- }
- void descendenti_directi()
- {
- for(i=1;i<=n;i++)
- if(v[i]==x)
- cout<<i<<" ";
- }
- int descendenti(int p)
- { int a;
- if(v[p]==0 && p!=r)
- return 1;
- else
- {for(i=1;i<=n;i++)
- if(v[i]==p)
- {a=i;
- cout<<a<<" ";}
- descendenti(a);}
- }
- void inaltime(int x,int l)
- { //incepem de la radacina si parcurgem fiecare nod neparcurs, daca nodul e bun inlocuim inaltimea
- if(l>h) //lungimea curenta
- h=l;
- for(int i=1;i<=n;i++)
- if(v[i]==x)
- inaltime(i,l+1);
- }
- int main()
- {
- creare();
- radacina();
- frunza();
- cin>>x;
- cout<<"Descendentii directi sunt: ";
- descendenti_directi();
- cout<<endl<<"Descendentii lui x sunt: ";
- descendenti(x);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement