![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
人间理想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 · 756 阅读 · 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 · 751 阅读 · 0 评论