如何引用具有数百万个节点的树中的子节点

我正在尝试构建一个树,其中每个节点可以有一个未指定数量的子节点。 该树在实践中将拥有超过一百万个节点。

我已经设法构建了树,但是当我用几千个节点填充树时,由于完整堆,我遇到了内存错误。 这是因为我试图将每个节点的子节点存储在Dictionary数据结构(或任何数据结构)中。 因此,在运行时我已经创建了数千个这样的数据结构,因为每个节点可以具有未指定数量的子节点,并且每个节点的子节点将存储在该数据结构中。

还有另一种方法吗? 我不能简单地使用变量来存储子节点的引用,因为每个节点可能有一个未指定数量的子节点。 那么,它不像二叉树,我可以有2个变量分别跟踪左孩子和右孩子。

请不要另外建议这样做的方法。 我有理由需要创建这个树,不幸的是我不能这样做。

谢谢!

你的节点有多少是“叶子”节点? 也许只有在您第一次生孩子时才创建数据结构来存储子项,否则保留空引用。

除非你需要将孩子们看作地图,否则我会使用List (用适当的容量初始化)而不是孩子们的Dictionary<,> 。 听起来你可能有比你解释的要求更多的要求,这很难说。

我很惊讶你只是在几千个节点之后失败了 – 你应该能够在出现问题之前创建大量的对象。

我还建议,如果您认为最终会占用大量内存,请确保您使用的是64位计算机,并确保您的应用程序本身设置为64位。 (这可能只是类库的一个瘦包装,只要类库设置为64位或AnyCPU就可以了。)