Vb.net 存储树数据结构

Vb.net 存储树数据结构,vb.net,data-structures,tree,Vb.net,Data Structures,Tree,我在vb.net中构建了一个三项式树结构。 每个节点都创建为具有特定属性的对象。 这些节点存储在ArrayList中。 这些ArrayList然后存储在另一个ArrayList中,即树 当我在4000个步骤(即我的树中的4000个ArrayList)上运行时,最终的ArrayList将有8001个节点。对象总数约为8000*4000/3=约>1000万个节点 这会导致程序因内存溢出而崩溃 存储我的树的最好方法是什么,这样它就可以像我想要的那样大?数据库或文本文件是前进的方向吗?一种解决方案是按如

我在vb.net中构建了一个三项式树结构。 每个节点都创建为具有特定属性的对象。 这些节点存储在ArrayList中。 这些ArrayList然后存储在另一个ArrayList中,即树

当我在4000个步骤(即我的树中的4000个ArrayList)上运行时,最终的ArrayList将有8001个节点。对象总数约为8000*4000/3=约>1000万个节点

这会导致程序因内存溢出而崩溃


存储我的树的最好方法是什么,这样它就可以像我想要的那样大?数据库或文本文件是前进的方向吗?

一种解决方案是按如下方式压缩树:

将每个对象映射到唯一的id,然后仅将id存储在ArrayList中。每个对象的特定属性可以存储在数据库中。您可以在需要访问特定对象的属性时查询数据库

如果存在频繁访问的对象实例,还可以使用某种缓存方案将这些对象的属性存储在内存中

编辑:如果ID的ArrayList也开始超出内存,那么您也可以尝试将ID分配给ArrayList,并将这些ArrayList的内容存储在数据库中


总之,使用某种压缩机制(以减少内存消耗),并将其与良好的缓存机制结合使用(以减少磁盘访问次数)

谢谢你。。我要试一试。