🌳 树状数组 · 可拖拽节点 固定数据 [1, 3, 5, 7, 9, 11, 13, 15]

▶ 📖 树状数组(Fenwick Tree)原理

树状数组 高效维护前缀和,单点更新和前缀和查询均为 O(log n)。

  • lowbit(x) = x & -x,表示 x 的二进制最低位 1 对应的值
  • tree[i] 管理区间 [i - lowbit(i) + 1, i] 的和
  • 更新 add(i, val): 从 i 向上跳:i += lowbit(i)
  • 前缀和 sum(i): 从 i 向下跳:i -= lowbit(i)

📌 交互提示:左侧树图中的节点可以拖拽,方便您调整布局后再逐步演示!

int lowbit(int x) { return x & -x; }

当前操作节点 更新路径(向上跳) 查询路径(向下跳) 被更新的叶子

📊 树状数组 (拖拽节点调整布局 | 索引 : 值 | L=lowbit)

🖱️ 拖拽任意节点调整位置,方便演示
📝 当前步骤 0 / 0
点击「建树」或「完整演示」开始

📋 操作历史

🟦 当前步骤  |  🔵 建树  |  🟡 更新  |  🟢 查询
✅ 操作完成!