计算树结构中树叶的索引
Compute index for leafs in a tree structure
给定一个深度为N的树(二进制)结构。是否可以计算一些用于映射叶节点的查找索引。
每个节点都知道它的父节点,如果不是叶子,则知道它的子节点(左和右)。
我的想法类似于说根节点是索引0,然后左:1,左:左:2,左:右:左:3,左:左侧:右侧:4,左:右侧:左侧:5,左:右边:右侧:6,右:7,右:左侧:8,例如
因此,给定一个叶节点,我如何才能最聪明地计算索引。
如果给出0.1…L的叶索引更明智,则也可以接受其他解决方案,其中L是叶的数量。
如果希望在数组中表示一棵树,最简单的方法是一次取一层树。
0
/
/
1 2 [0, 1, 2, 3, 4, 5, 6]
/ /
3 4 5 6
通过这种方式,查找父级只需:(index-1)/2
。找到两个孩子就是2*index
和2*index + 1
。
在我的树结构(四叉树和八叉树)中,我使用每个节点索引的二进制表示。例如每个维度的32位(对于最大32电平)。因此,我可以通过公式来计算一片叶子的完整索引(或路径)
path.x=(无符号int)(leaf.position.x*pow(2,32));
leaf.position.x必须在0…1 的范围内
这种方法的唯一限制(我认为)是,您存储的数据必须在特定的范围内,这样您就可以根据您的区域大小进行划分。如果这对您的用例来说是可能的,请访问简单有效的导线测量方法四叉树和八叉树
相关文章:
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- 获取结构 c++ 中元素的索引
- C++ STL 数据结构常时按索引推送/弹出/随机访问,并具有指向元素的可靠指针
- 如何使用值获取结构的索引
- 如何二进制搜索结构向量并在适当的索引处插入
- 用于存储网格(将具有负索引)的数据结构
- 是否可以将结构分配给向量的索引?
- 在 c++ 中为结构实现索引器
- 查找索引数据结构,例如`sTD :: vector`(非数组)
- 如何对同一数组索引下的结构成员进行排序?
- 从右到左计算当前索引中的数据结构中的元素数,并打印每个元素的计数
- 使用c中的结构的malloc通过大量存储器进行索引
- 尝试将文件读入结构数组,但 for 循环仅显示第一个索引,其余索引显示为零
- 如何创建辅助数据结构来跟踪 c++ 中 decrease_key 操作的堆索引
- C 用于向量中的结构访问索引或使用参考值
- 如何使用索引访问C 结构属性值
- C++ 中结构的动态索引数组
- 当结构数组在主线程中填充数据时,从结构数组的低索引元素读取是否线程安全
- 如何取消结构的索引
- 索引结构是否合法?