我很难掌握如何迭代八叉树或四元组。这可能是因为我没有经历过不同的迭代神话。但假设我生成了一个包含float x,y,z的四叉树;双色。现在,我们还要说,这个节点一次只能产生4个孩子(并且这些孩子可以产生4个孩子等等),直到达到7个级别(以便孩子不能再创造孩子,但是它的孩子兄弟/姐妹可以),所有4个孩子创建的dword颜色是相同的(如果发生这种情况,它的兄弟姐妹仍然可以生产),或者创建的总节点等于87380.当上述情况发生时,容器。这个过程还在继续。如何迭代四/十进制树
现在这个容纳节点的容器是(例如)7层深的,儿童的所有孩子都有不同的x,y,zs和颜色。我遇到的问题是我如何迭代这个容器,我怎么能通过所有的孩子,姐妹?由于根可以导致4个孩子,并且这4个孩子有4个孩子等等,等等:4^1 + 4^2 .... + 4^7。如何在不编写复杂if语句的情况下找到我想要的节点,并遍历整个节点(从根开始)?容器(产生节点的那个容器)是否需要额外的代码来让这个过程变得简单?
对不起,如果问题是一般的。
哇,这真的有很大的帮助。我现在完全理解这种容器背后的逻辑!它非常有意义:)。还有其他方法可以超快速地在树上找到一个点吗?还是仅仅是这样?我也想知道,如果你杀了一个分支节点,你怎么让其中一个孩子接管? – User 2012-07-15 01:05:14
还有很多其他方法 - 请参阅http://en.wikipedia.org/wiki/Spatial_index。当树内有点时,删除节点并不容易 - 这就是大多数人将它们放在叶子上的原因。但它可能可以完成,只是棘手。 – 2012-07-15 02:34:22