C++树遍历效率问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 23:55:53
目前对一个多分枝地树进行遍历,用的广度优先遍历,由于数据量很大估计超过
5000+,效率确实很低,想找个效率高的遍历方法,那位高手指教下.
有人说用多线程遍历效率会好很多,目前还没这方面的经验.高手说下多线程对这样大量的遍历有没好处呢?

一般来说多线程的程序占用资源肯定多于单线程资源,所以其实广搜还是很快的。
但是,在这种情况下,由于结构指明是树,所以深度优先搜索来遍历效率会优于广度优先遍历。。因为深搜实际上所耗的最大空间仅仅是这棵树从根到叶子的最长路径节点数,而广搜的话则可能需要同一高度上叶子数的最大值。

而且,如果树节点存在父链,还可以直接用 while 进行直接遍历,省却麻烦。

这个恐怕也没什么好办法。 B树或者更复杂的改版只是插入、查找的效率更高, 对遍历没什么帮助

如果你用多核cpu应该会有一些提升, 主要是现在单线程的多核并行做的不好。 但从算法上说多线程也省不掉什么

建议使用B树
请详细阅读参考资料

234树,B/B+数