B树就想到这个

比如要查找60

先在根结点中查,根结点里面有 17  35这2个关键字, 60 > 35,则从右边开始查找

p3指针开始查找 ,  到了第二层的最右边的那个结点开始查找 , 里面有  65  87 两个关键字

60在最左边,所以沿着那个走向查找

————————————

根结点至少有2个子结点,除非根结点为叶子节点,(这里是3个子节点)

相应的,根结点中关键字的个数为1~m-1,比节点数目少一个

 有k个子节点恰好包含k-1个关键字 (关键问题所在)

m是一个结点拥有最多m个子节点

非根结点至少有[m/2]([],向上取整)个子结点,相应的,关键字个数为[m/2]-1~m-1。

时间: 2024-09-29 11:26:20

B树就想到这个的相关文章

HDU 4825 Trie树 异或树!

Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)Total Submission(s): 2403    Accepted Submission(s): 1041 Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Ze

最短树

源代码: #include<cstdio> #include<cstring> #include<queue> #define LL long long #define INF 2147483647 //竟然没注意到取模. using namespace std; queue <LL> Q; LL n,m,Num(0),Ans=1,Sum[1000001]; LL i[1000001],Head[1000001]; bool In[1000001]={0};

Construct Binary Tree from Inorder and Postorder Traversal ——通过中序、后序遍历得到二叉树

题意:根据二叉树的中序遍历和后序遍历恢复二叉树. 解题思路:看到树首先想到要用递归来解题.以这道题为例:如果一颗二叉树为{1,2,3,4,5,6,7},则中序遍历为{4,2,5,1,6,3,7},后序遍历为{4,5,2,6,7,3,1},我们可以反推回去.由于后序遍历的最后一个节点就是树的根.也就是root=1,然后我们在中序遍历中搜索1,可以看到中序遍历的第四个数是1,也就是root.根据中序遍历的定义,1左边的数{4,2,5}就是左子树的中序遍历,1右边的数{6,3,7}就是右子树的中序遍历

[leetcode]Construct Binary Tree from Inorder and Postorder Traversal @ Python

原题地址:http://oj.leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/ 题意:根据二叉树的中序遍历和后序遍历恢复二叉树. 解题思路:看到树首先想到要用递归来解题.以这道题为例:如果一颗二叉树为{1,2,3,4,5,6,7},则中序遍历为{4,2,5,1,6,3,7},后序遍历为{4,5,2,6,7,3,1},我们可以反推回去.由于后序遍历的最后一个节点就是树的根.也就是roo

洛谷 P1001 A+B Problem

题目描述 输入两个整数a,b,输出它们的和(|a|,|b|<=10^9). 注意 1.pascal使用integer会爆掉哦! 2.有负数哦! 3.c/c++的main函数必须是int类型,而且最后要return 0.这不仅对洛谷其他题目有效,而且也是noip/noi比赛的要求! 好吧,同志们,我们就从这一题开始,向着大牛的路进发. “任何一个伟大的思想,都有一个微不足道的开始.” 输入输出格式 输入格式: 两个整数以空格分开 输出格式: 一个数 输入输出样例 输入样例#1: 20 30 输出样

【IOI2018】机械娃娃

看到的时候感到很不可做,因为所有的开关都要状态归零.因此可以得到两分的好成绩. --然后 yhx-12243 说:这不是线段树优化建图吗? 于是我获得了启发,会做了-- 还不是和上次一样,通过提示做出这种交互题的? 我还是太菜了 以下魔改自我的思考过程(一开始想对每一个触发器配一组开关决策下一步,然后听说用线段树直接想到一组开关决策整颗树了) 其实前半部分的思考貌似没用,直接套到整棵树上是适用的 因为状态要清零,考虑清空这个状态. 考虑每个触发器连向一个开关,来决策下一步走什么,因为和二进制有关

luoguP4175 CTSC2008网络管理

一句话题意:树上路径带修第k大 考虑树上不带修第k大怎么做的: 维护一个前缀主席树,然后\(u\), \(v\), \(LCA(u, v)\)和\(fa[LCA(u, v)]\)四个主席树相减即可 这题这么做就会出现一个问题 就是如果修改u的线段树的值,那么所有位于u的子树的线段树都要进行修改 如何高效修改子树内的线段树呢 想到了\(dfs\)序 一个子树在dfs序上面是一个连续的区间 那么如果我们把前缀主席树差分一下 (实际上就是变成了每个节点单独一个动态开点线段树) 然后子树修改就转化成了区

[poj2104]可持久化线段树入门题(主席树)

解题关键:离线求区间第k小,主席树的经典裸题: 对主席树的理解:主席树维护的是一段序列中某个数字出现的次数,所以需要预先离散化,最好使用vector的erase和unique函数,很方便:如果求整段序列的第k小,我们会想到离散化二分和线段树的做法, 而主席树只是保存了序列的前缀和,排序之后,对序列的前缀分别做线段树,具有差分的性质,因此可以求任意区间的第k小,如果主席树维护索引,只需要求出某个数字在主席树中的位置,即为sort之后v中的索引:若要求第k大,建树时反向排序即可 1 #include

【BZOJ 3551】[ONTAK2010] Peaks加强版 Kruskal重构树+树上倍增+主席树

这题真刺激...... I.关于Kruskal重构树,我只能开门了,不过补充一下那玩意还是一棵满二叉树.(看一下内容之前请先进门坐一坐) II.原来只是用树上倍增求Lca,但其实树上倍增是一种方法,Lca只是他的一种应用,他可以搞各种树上问题,树上倍增一般都会用到f数组. |||.我们跑出来dfs序就能在他的上面进行主席树了. IV.别忘了离散. V.他可能不连通,我一开始想到了,但是我觉得出题人可能会是好(S)人(B),但是...... #include <cstdio> #include