我需要找到一个完美的四叉树的大小。 这意味着我有1个根节点,它分成4个节点,分成4个节点等。
所以高度为1的四叉树的大小为1 高度2 =大小5(1 + 4) 身高3 = 21岁(1 + 4 + 16) 高度4 =大小85(1 + 4 + 16 + 64)
等。
我知道可以找到完美二叉树的大小:size = 2 ^(height + 1)-1 所以我认为四叉树存在类似的方程式。
那是什么?
答案 0 :(得分:3)
答案 1 :(得分:3)
对于四叉树,算法
((4^depth)-1)/3
例如深度为3,
(64-1)/3 = 21
如果算上三层,你会得到
1 + 4 + 16 = 21
在我的实现中,我甚至把它分成了两个数组 不离开节点的所有节点的大小为
((4^(depth-1))-1)/3
并留下节点
4^(depth-1)
我在编译时使用pow的元编程和深度的模板参数进行这些计算。所以我只是将节点分配到两个数组中。
答案 2 :(得分:0)
以防任何人需要代码示例(在swift3中)
public func tileCount(forLevelRange levelRange: Range<UInt>) -> UInt64 {
var tileCount: UInt64 = 0
for level in levelRange.lowerBound ..< levelRange.upperBound {
tileCount += UInt64(pow(Double(1 << level), 2) )
}
return tileCount
}