码迷,mamicode.com
首页 > 其他好文 > 详细

树的基础代码

时间:2018-08-25 20:37:18      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:二维   size   read   调用   push   can   int   ++   基础   

每一个结点一个数组,所有结点又构成一个数组,即二维。

结点的数组保存的是与这个结点相邻的所有点的编号。

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);

 

树的基础代码

标签:二维   size   read   调用   push   can   int   ++   基础   

原文地址:https://www.cnblogs.com/larvie/p/9535201.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!