我正在基于 c# 实现树数据结构(主要基于Dan Vanderboom 的通用实现)。我现在正在考虑处理 Dan 没有实现的 Count 属性的方法。
显而易见且简单的方法是使用递归调用,它遍历树愉快地添加节点(或者如果您愿意,可以使用队列和计数节点迭代遍历树)。只是看起来很贵。(我也可能想延迟加载我的一些节点)。
我可以在根节点上维护一个计数。所有子节点都将遍历和/或持有对根的引用,并在更改时更新内部可设置的计数属性。这会将迭代问题推到我想要中断分支或清除给定节点下的所有子节点的时候。通常更便宜,并且把我认为不太常用的功能放在了繁重的地方。
似乎有点蛮力,这通常意味着我还没有想到的异常情况,或者如果你愿意,还有错误。
有没有人有一个实现的例子,它保持一个不平衡和/或非二叉树结构的计数,而不是即时计数?不要担心延迟加载,我相信我可以调整示例以满足我的特定需求。