1. 程式人生 > >樹的基礎代碼

樹的基礎代碼

增加 編號 代碼 () 之間 問題 bsp oot read

每一個結點一個數組,所有結點又構成一個數組,即二維。

結點的數組保存的是與這個結點相鄰的所有點的編號。

vector<int>G[maxn]; //(maxn為點的總個數)
void read_tree()
{
int u,v;
scanf("%d",&n);
for(int i=0;i<n-1;i++)
{
scanf("%d%d",&u,&v);//(u與v之間有邊)
G[u].push_back(u);
G[v].push_back(v);
}
}

把上面的矩陣關系轉化為一顆樹(主要增加誰是根的問題)

void dfs(int u,int fa)
{
int d=G[u].size();
for(int i=0;i<d;i++)
{
int v=G[u][i];
if(v!=fa)
dfs(v,p[v]=u);
}
}
p[i]=i的父結點的編號;
調用:dfs(root,-1);

樹的基礎代碼