您这个层级和节点关系说的有点草率呀

来源:11-2 对称二叉树-代码实操

诺巴蒂

2020-01-08

n = Math.floor(log2(nodeIndex+1) )

这个是可以解释一下的,自己空想咋想出这么个公式;
每层级数量是等比数列,一层 1;二层 2;三层;4…
前 n 层有多少个就是:
a1(1-q^n)/1-q(a1 就是第一层数量1,n >=1)
1*(1-2^n)/ 1 - 2
2^n - 1
也就是说,前n层就有 2^n - 1
下一层
起始索引是 2^n - 12^n - 1 + 1 - 1
层数索引是 n(数学里 n 是 1 起,对应树上是下一层的 层数 索引)
层数用起始节点算就是 n = log2(2^n - 1 + 1) = log2(first + 1)
后面索引其实就是第一个索引依次加1后Math.floor一下(因为直到下一行n才会加1)

这里您说的有点草率呀,我空看半天也没看出这个规律,还是算了一下…

写回答

1回答

快乐动起来呀

2020-01-09

这个很简单呀就是指数计算的公式,你对比看下

0
1
qq_狼啸_0
let n = Math.floor(Math.sqrt(i + 1)) // 是否为Math.floor(Math.log2(i + 1))
2020-12-10
共1条回复

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 395 问题

查看课程