【发布时间】:2017-10-02 08:04:49
【问题描述】:
用例是以下查询:给定两个节点的指针:这些节点是否在树的同一分支中?
示例
q(2,7) => true
q(5,4) => false
按书(慢)
直接的实现是在每个节点存储一个指向父节点的指针和一个指向子节点列表的指针。但这会导致性能不佳,因为树会在内存中分段,因此无法识别缓存。
问题
以紧凑的形式表示树的好方法是什么?整棵树大约有 100,000 个节点。所以应该可以找到一种方法让它完全适合 CPU 缓存。
例如二叉树通常是represented implicitly as an array,因此非常适合完全存储在 CPU 缓存中(如果足够小的话)。
【问题讨论】:
标签: algorithm performance tree implementation