// 计算当前节点在哪一层 let n = Math.floor(Math.sqrt(i + 1))

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

静听雨逝

2019-06-19

我发现这个等式只适用于4层以内的二叉树,然后我改成这样

 let n = 1
        for (let i = 0, len = data.length; i < len; i++) {
            let node = new Node(data[i])
            // 因为每层第一个节点必然是 2 的 n 次方,所以通过比较i的值,来递增 n
            if ((i + 1) >= 2 ** (i + 1)) {
                n += 1
            }
写回答

1回答

快乐动起来呀

2019-06-19

同学我决定你理解的不对,这个公式不是只针对4层以下的,以上的也可以的

0
2
快乐动起来呀
回复
weixin_慕仔4426869
哦哦,我理解你的意思了,2的n次方不能用sqrt(开方)来计算,应该用 Math.log2 这个来算
2019-07-30
共2条回复

JavaScript版 数据结构与算法

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

2467 学习 · 395 问题

查看课程