C++ 寻找完美四叉树的大小

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是

我需要找到一个完美的四叉树的大小。 这意味着我有一个根节点,可以分成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
是术语数,
^
表示“的幂”。

对于四叉树,算法是

((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)(谢谢!这是一个非常有用的等式!