Fenwick Tree (Binary Indexed Tree)
给定 n 个元素 array,时间复杂度为
Fenwick Tree 主要用于求各种维度的区间 sum,主要缺点在于建树时间长于 segment tree ,需要 O(n log n) 时间,还有和面试官解释的时候比较麻烦。。主要优点是好写,而且非常容易扩展到多维情况。
Youtube 视频讲解


在图上的树状结构中,任意一个点的 parent 等于其 binary representation 的最右一个 1 的 bit 上再 +1; 比如 3 = 0011 ,parent = 8 = 0100.
从 child 到 parent 这条线,代表着更新。上图的结构,也是相对于更新操作的 tree structure.
而 query 是另一种结构和搜索过程,是一步一步把 index 的 binary representation 拆出来,变成 13 = 001011 ,对应 BIT[001000] + BIT[000010] + BIT[000001] 的过程
这题如果 int[][] nums 直接指向 matrix 会在 update 操作之后得到错误结果,目前我还没仔细想为什么。。。稳妥起见还是老老实实新建一个吧。
Last updated