【发布时间】:2018-02-17 06:23:18
【问题描述】:
我有一个 Python 代码,它从根节点向上构造一个四叉树,并根据需要引入新节点。
这个四叉树需要不断地重构我目前所做的是,每次需要重构四叉树时,我将根节点的子节点列表重置为空列表,并从根开始构建树.
我担心的是,前一棵树的所有节点(根节点除外)仍会存在于内存中。在整个程序过程中,树可能会被重建数万次,平均可能包含 5000 个节点,所以如果内存过载,我不会感到惊讶。
为了不超过内存限制,我不是必须以某种方式删除所有以前的节点吗?我该怎么做?
【问题讨论】:
-
所以你并不是说你要插入新节点并且需要以某种方式重新塑造你的树,而是你正在拆除你的树(例如基于数据集 A)并构建一个新的(基于 B 数据集)?
-
程序的工作方式是每次都必须从根向上构建树。一旦我们使用数据集 B 重建树,我们就不关心使用数据集 A 的前一棵树的节点中的数据。我所拥有的是我不会“拆除”树 A。我不会重写树 A 的节点。我从同一个根节点开始构造一棵全新的树 B(我首先将其子节点重置为空)。因此,在构造 B 之后,如果我理解正确的话,来自树 B 和树 A 的节点对象都存储在内存中。我应该做的是删除树A,但我不知道如何。
标签: python algorithm list memory memory-management