您的位置:首页 > 编程语言 > C语言/C++

树转二叉树(邻接矩阵,邻接表)

2013-11-05 17:15 267 查看
邻接矩阵:


void build(int s)
{
visit[s]=1;//该点是否访问过
for(int i=1;i<=n;i++)
if( f[s][i] && !visit[i] )//f[s][i]是标记s与i是否有连边
{
if( !zr[s] ) zuo[s]=i;
else you[zr[s]]=i;//zr是一个迭代
zr=i;
}
if( zuo[s] ) build(zuo[s]);//递归
if( you[s] ) build(you[s]);
}


邻接表:

void build(int v)
{   int t=0,w=1;
p[1]=v;
visit[p[1]]=true;//以1为根节点
while(t<w)
{
t++;
for(int i=head[p[t]];i;i=e[i].next)
if(!visit[e[i].to])
{
if(!zr[p[t]])
{
zuo[p[t]]=e[i].to;
w++;
p[w]=e[i].to;
visit[e[i].to]=true;
}
else
{
you[p[w]]=e[i].to;
w++;
p[w]=e[i].to;
visit[e[i].to]=true;
}
zr[p[t]]=true;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息