树与图的存储和遍历

编程入门 行业动态 更新时间:2024-10-24 20:24:03

树与图的存储和遍历

存储

树是一种特殊的图,与图的存储方式相同.
对于无向图中的边ab,存储两条有向边a->b b->a
因此只考虑有向图的存储.

邻接矩阵 g[a][b] == 边a --> b邻接表: 就是二维的单链表
int h[N],e[N],ne[N],idx;
	// 添加一条边void add(int a, int b){e[idx] = b, ne[idx] = h[a], h[a] = idx++;}// 初始化时idx = 0;memset(h, -1, sizeof h); 

遍历

深度优先遍历

时间复杂度O(n + m)

int dfs(int u)
{st[u] = true; // st[u] 标识u点已经被遍历for(int i = h[u]; i != -1; i = ne[i]){int j = e[i];if(!st[j]) dfs(j);}
}

宽度优先遍历

queue<int> q;
st[1] = true; // 标识1号点已经被标记
q.push(1);while(q.size())
{int t = q.front();q.pop();for(int i = h[t];i!=-1;i=ne[i]){int j = e[i];if(!st[j]){st[j] = true;q.push(j);}}
}

更多推荐

遍历

本文发布于:2023-05-28 06:53:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/315071.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:遍历

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!