gpt4 book ai didi

c++ - 通过指针数组实现树的优点?

转载 作者:行者123 更新时间:2023-11-28 05:37:06 29 4
gpt4 key购买 nike

最近学习了通过struct来实现树

struct Node{
Node *parent;
vector<Node*> child;
Node(void):parent(nullptr){}
}

我认为这是实现树的一种非常直接的方法,并且在结构中包含更多用于进程的内容也更容易。

但是,我注意到在很多人的代码中,他们更喜欢使用数组而不是指针。我可以理解二叉树的这一点,因为它也很容易通过数组来实现,但为什么在其他更复杂的图上呢?

最佳答案

来自 Skiena:2008:ADM:1410219 和 Cormen:2001:IA:580470 比较的邻接矩阵和邻接列表得出:

  • 邻接矩阵可以更快地测试 (x, y) 两个节点是否有连接边
  • 邻接表可以更快地找到给定节点的度数(邻居的数量)。
  • n^2 相比,如果使用邻接表实现,具有 m 节点和 n 边的图会消耗 m + n 空间 用于邻接矩阵。
  • 邻接矩阵对大图使用稍微较少的内存。
  • 使用邻接矩阵时,边插入/删除的执行时间为 O(1)
  • 遍历使用邻接表实现的图在 Θ(m + n) 和矩阵 Θ(n^2)
  • 中执行

如果一个图有很多顶点但边很少,邻接矩阵会消耗过多的内存。

所以一般来说,邻接表表现得更好。

关于c++ - 通过指针数组实现树的优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38017828/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com