【发布时间】:2016-10-27 08:02:11
【问题描述】:
最近我学会了通过结构实现树,例如
struct Node{
Node *parent;
vector<Node*> child;
Node(void):parent(nullptr){}
}
我认为这是实现树的一种非常直接的方式, 并且在结构中包含更多用于进程的内容也更容易。
但是,我注意到在很多人的代码中, 他们更喜欢使用数组而不是指针。 对于二叉树,我可以理解这一点,因为它也很容易通过数组来完成 ,但是为什么要在其他更复杂的图上呢?
【问题讨论】:
-
你可能不想使用pointers at all。
-
我在课堂上学到的方法是,如果你想用这种结构来表示一个连通图,那么数组数组更适合密集图(因为数组几乎完整),但如果 Graph 稀疏(连接较少),请改用指针(列表数组)。数据结构的选择始终取决于应用程序!
-
@πάντα ῥεῖ 为什么不呢?我看不出它背后的原因,如果树没有完全填充,数组不会浪费更多的内存吗?
-
考虑这篇文章:stackoverflow.com/questions/3287003/…。您当前正在使用带有指向边的指针的节点。那篇文章讨论了存储连接图的各种其他方式及其优点和局限性。请记住,一般的树结构只是一个连通的无环图。
-
通过指针数组实现树的优点?还是通过数组而不是结构实现树的优点?在您的标题中,您指的是“通过指针通过数组实现树的优点”,但在您的文章中,我发现您觉得访问数组比访问结构更容易。你想使用数组而不是结构吗?还是您想使用数组而不是指针?请澄清一下……这样我就可以给你一个解决方案。