C++ 寻找完美四叉树的大小
我需要找到一个完美的四叉树的大小。 这意味着我有一个根节点,可以分成4个节点,可以分成4个节点,以此类推 所以高度为1的四叉树的大小为1 高度2=尺寸5(1+4) 高度3=尺寸21(1+4+16) 高度4=尺寸85(1+4+16+64) 等等 我知道完美二叉树的大小可以用:size=2^(height+1)-1找到 所以我相信四叉树也存在类似的方程 那是什么呢?这是一个很好的例子。因此,相关公式为:C++ 寻找完美四叉树的大小,c++,tree,size,binary-tree,C++,Tree,Size,Binary Tree,我需要找到一个完美的四叉树的大小。 这意味着我有一个根节点,可以分成4个节点,可以分成4个节点,以此类推 所以高度为1的四叉树的大小为1 高度2=尺寸5(1+4) 高度3=尺寸21(1+4+16) 高度4=尺寸85(1+4+16+64) 等等 我知道完美二叉树的大小可以用:size=2^(height+1)-1找到 所以我相信四叉树也存在类似的方程 那是什么呢?这是一个很好的例子。因此,相关公式为: S = a * (1 - r^n) / (1 - r) 其中,a是第一个值,r是公共比率,n是
S = a * (1 - r^n) / (1 - r)
其中,
a
是第一个值,r
是公共比率,n
是术语数,^
表示“的幂”。对于四叉树,算法是
((4^depth)-1)/3
例如,对于深度3,您将获得
(64-1)/3 = 21
如果你数三层,你会得到
1 + 4 + 16 = 21
在我的实现中,我甚至将它分为两个数组
其中,所有未离开节点的节点的大小为
((4^(depth-1))-1)/3
4^(depth-1)
而离开节点就是
((4^(depth-1))-1)/3
4^(depth-1)
我在编译时使用pow的元编程和深度的模板参数进行这些计算。因此,我只需将节点分配到两个数组中。以防任何人需要代码示例(在swift3中)
public func tileCount(forLevelRange:Range)->UInt64{
变量tileCount:UInt64=0
对于levelRange.lowerBound.. tileCount+=UInt64(pow(Double)(谢谢!这是一个非常有用的等式!