树状数组简明介绍
来源:互联网 发布:买fm2药在淘宝搜什么 编辑:程序博客网 时间:2024/05/12 06:41
先看一幅图
树状数组英文名叫 Binary Indexed Tree或Fenwick Tree。这也就表明 树状数组逻辑上是一种树,但是物理上是用数组来存储。
1、存储树状数组的数组下标是从1开始的。
2、如何得到一个结点的祖先结点?
观察到:
从低向上地
- 结点1(0001)【1的二进制形式是0001】的祖先节点分别是2(0010)、4(0100),8(1000)
- 结点2(0010)的祖先结点为4(0100),8(1000)
- 结点3(0011)的祖先节点为4(0100),8(1000)
- 结点5(0101)的祖先节点为6(0110),8(1000)
…
于是我们可以归纳出:
编号为n的父结点的编号为(n + n’)。
n’如何得到的呢?
将n写成二进制,将此二进制中的除了最后1之外所有的1改为0,改完得到的就是n’的二进制表示,所以就得到了n’。
3、如何得到一个结点的左边的兄弟结点?
观察到,自右向左:
- 3(0011)左边的兄弟分别为1(0010)
- 5(0101)左边的兄弟分别为4(0100)
- 7(0111)左边的兄弟分别为6(0110)、4(0100)
…
于是我们可以归纳出:
编号为n的结点右边挨着的兄弟节点的编号为n-n’。
n’如何得到呢?其实和2中的n’是一样的。
0 0
- 树状数组简明介绍
- 树状数组介绍(转)
- 树状数组详细介绍
- 树状数组详细介绍
- 树状数组—介绍
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 那么就是编程之路的开始了
- 关于Struts2中ActionSupport的作用
- iOS WIFI 信息 获取
- switch-case retrun break
- MarkDown语法
- 树状数组简明介绍
- linux文件权限命令小结
- boost--asio--读写大总结
- Spring中Quartz调度器的使用
- 基于RFID技术的预制件管理系统的开发
- pcl点云库学习笔记
- Swift 绘图板功能完善以及终极优化
- 三消游戏--冒险王总结
- 使用AIDL双向通信