划分树的建树与查询的理解
来源:互联网 发布:c语言cin怎么用 编辑:程序博客网 时间:2024/09/21 08:16
http://blog.csdn.net/pi9nc/article/details/8996939
首先先参考这篇博客通俗易懂,,接下来说说在上面这博客中 博主不懂的地方 也就是查询操作中newl 和newr的值的确定:
首先:newl 和newr的取值目的是确定在划分树当前层的下一层中的左区间(子树) 或者右区间(子树)中需要查询的区间范围,也就是newl和newr;
其次:
1,查询的数在左子树中,即k<=ss,那么newl=left+s,因为s的含义是qleft左边的数在下一层的左区间内有多少个,而这s个数并不包含要查询的数也就是不需要的数,所以left+s的位置是左区间中第一个需要查询的数的位置;另外newr=left+(s+ss)-1同理,-1的原因:因为left+s的位置是左区间中第一个需要查询的数的位置,那么从这个位置起需要查询接下来的ss个数,所以-1之后就是需要查询的区间终点;
2,查询的数在右子树中,即k>ss,那么newl=mid-left+1+qleft-s,首先mid-left+1的意思就是左区间的数的个数,而我们要确定是右区间的起点。因为s的含义是qleft左边的数在下一层的左区间内有多少个,反过来就是说qleft-s的意思就是qleft左边的数出现在右区间的数的个数,而这些数是不在查询范围内的,所以查询起点newl就确定好了。对于newr=mid-left+1+qright-s-ss,(qright-s-ss)的意思就是下一层所需要查询的区间的数的个数。
0 0
- 划分树的建树与查询的理解
- hiho-1014 Trie树 (Trie的建树与查询)
- 【BZOJ3932】任务查询系统,主席树与差分的建树思想
- 线段树的建树
- [模板]线段树的建树、查询、单点更新、区间更新
- 20170816(二叉树的建树与遍历 计算几何 信心)
- 二叉树的建树方法
- 字典树 静态建树与动态建树
- 二叉搜索树(BST)的常用操作:建树、插入、查询、删除、排序打印
- 线段树(建树,查询)
- 线段树的两种建树模型
- HDU 5444-二叉树的遍历+建树
- 主席树的不同建树方式
- perl的建树算法
- 一个建树的程序
- 建树的方法
- 论建树的方法
- 数据结构六:二叉树的先序建树与中序的非递归遍历算法
- 使用Volley实现Https请求, Volley SSL 双向自认证证书请求。
- Asp导出数据库数据到Excel
- 从Python 官方文档找知识点答案的方法
- static全局变量 & 全局变量
- Android ActionBarDrawerToggle、DrawerLayout、ActionBar 结合
- 划分树的建树与查询的理解
- 常换常新 PMC SAS/SATA HBA 不输“乌镇”
- MAC中设置android adb环境变量
- LeetCode Remove Duplicate Letters
- Leetcode-127.Word Ladder
- 黑马程序员_多线程1.50的特性
- std::thread vs CreateThread
- win10(UEFI)安装卸载ubuntu
- Qt悬浮窗