树
人间理想xxf
这个作者很懒,什么都没留下…
展开
-
如何用数组模拟树
如何使用数组模拟树? 代码示例如下: const int N=10010,M=N*2; int n; int p[N]; int h[N],e[M],ne[M],idx; void add(int a,int b) { e[idx]=b,ne[idx]=h[a],h[a]=idx++; } 注:因为树是无向图,所以可以把每一条边当成2个有向边存储。这样就是上面第三行为什么M是N的2倍的原因。 那么当树以无向图的方式存储(也就是每一条边当成2条有向边存储时),如何使用dfs()遍历每个节点而不重复原创 2020-07-26 18:23:00 · 728 阅读 · 0 评论 -
如何使用DFS()遍历树的每个节点而不重复呢?(pat1021题解)
当树以无向图的方式,数组模拟的方式 存储(也就是每一条边当成2条有向边存储时),如何使用dfs()遍历每个节点而不重复呢? 示例的代码如下: int dfs(int u,int father )//father用于防止重复搜索的dfs,使得每个叶子节点只可以搜索一次 { int depth=0; for(int i=h[u];i!=-1;i=ne[i]) { int j=e[i] ; if (j==father) continue;//过滤掉父节点,让原创 2020-07-26 18:22:03 · 730 阅读 · 0 评论