免费智能真题库 > 历年试卷 > 数据库系统工程师 > 2019年上半年 数据库系统工程师 上午试卷 综合知识
  第7题      
  知识点:   B_树   B-树   查找
  章/节:   计算机软件基础知识       

 
B-树是一种平衡的多路查找树。以下关于B-树的叙述中,正确的是( )。
 
 
  A.  根结点保存树中所有关键字且有序排列
 
  B.  从根结点到每个叶结点的路径长度相同
 
  C.  所有结点中的子树指针个数都相同
 
  D.  所有结点中的关键字个数都相同
 
 
 

   知识点讲解    
   · B_树    · B-树    · 查找
 
       B_树
        一棵m阶的B_树,或为空树,或为满足下列特性的m叉树。
        (1)树中每个结点最多有m棵子树。
        (2)若根结点不是叶子结点,则最少有两棵子树。
        (3)除根之外的所有非终端结点最少有棵子树。
        (4)所有的非终端结点中包含下列数据信息:
        (nA0K1A1K2A2,…,KnAn
        其中,Kii=1,2,…,n)为关键字,且Ki<Ki+1i=1,2,…,n-1);Aii=0,1,…,n)为指向子树根结点的指针,且指针Ai-1所指子树中所有结点的关键字均小于Kii=1,2,…,n),An所指子树中所有结点的关键字均大于Knn为结点中关键字的个数且满足
        (5)所有的叶子结点都出现在同一层次上,并且不带信息(可以看作是外部结点或查找失败的结点,实际上这些结点不存在,指向这些结点的指针为空)。
        一棵4阶的B_树如下图所示。
        
        4阶B树示意图
        由B_树的定义可知,在B_树上进行查找的过程是:首先在根结点所包含的关键字中查找给定的关键字,若找到则成功返回;否则确定待查找的关键字所在的子树并继续进行查找,直到查找成功或查找失败(指针为空)时为止。
        B_树上的插入和删除运算较为复杂,因为要保证运算后结点中关键字的个数大于等于,因此涉及结点的“分裂”及“合并”问题。
        在B_树中插入一个关键字时,不是在树中增加一个叶子结点,而是首先在低层的某个非终端结点中添加一个关键字,若该结点中关键字的个数不超过m-1,则完成插入;否则,要进行结点的“分裂”处理。所谓“分裂”,就是把结点中处于中间位置上的关键字取出来插入到其父结点中,并以该关键字为分界线,把原结点分成两个结点。“分裂”过程可能会一直持续到树根。
        同样,在B_树中删除一个结点时,首先找到关键字所在的结点,若该结点在含有信息的最后一层,且其中关键字的数目不少于,则完成删除;否则需进行结点的“合并”运算。
        若待删除的关键字所在的结点不在含有信息的最后一层,则将该关键字用其在B_树中的后继替代,然后删除其后继元素,即将需要处理的情况统一转化为在含有信息的最后一层再进行删除运算。
 
       B-树
        B-树的定义:一棵m阶的B-树,或为空树,或为满足下列特性的m叉树。
        (1)树中每个节点至多有m棵子树。
        (2)若根节点不是叶子节点,则至少有两棵子树。
        (3)除根之外的所有非终端节点至少有棵子树。
        (4)所有的非终端节点中包含下列数据信息,即
        (n,A0,K1,A1,K2A2,…,Kn,An)
        式中,Ki(i=1,2,…,n)为关键字,且Ki<Ki+1(i=1,2,…,n-1);Ai(i=1,2,…,n)为指向子树根节点的指针,且指针Ai-1,所指子树中所有节点的关键字均小于Ki(i=1,2,…,n),An所指子树中所有节点的关键字均大于Kn为节点中关键字的个数。
        (5)所有的叶子节点都出现在同一层次上,并且不带信息(可以看作外部节点或查找失败的节点,实际上这些节点不存在,指向这些节点的指针为空)。
        B-树上进行查找的过程是:首先在根节点所包含的关键字中查找给定的关键字,若找到则成功返回;否则确定待查找的关键字所在的子树并继续进行查找,直到查找成功或查找失败(指针为空)时为止。
        B-树上的插入和删除运算较为复杂,因为要保证运算后节点中关键字的个数大于等于,因此涉及节点的"分裂"及"合并"问题。
        在B-树中插入一个关键字时,不是在树中加一个叶子节点,而是首先在低层的某个终端节点添加一个关键字,若该节点中关键字的个数不超过m-1,则完成插入;否则,要进行节点的"分裂"处理。"分裂"就是把节点中处于中间位置上的关键字取出来插入到其父节点中,并以该关键字为分界线,把原节点分成两个节点,"分裂"过程可能会一直持续到树根。
        在B-树中删除一个节点时,首先找到关键字所在的节点,若该节点在含有信息的最后一层,且其中关键字的数目不少于,则完成删除;否则需进行节点的"合并"运算。若待删除的关键字所在节点不在含有信息的最后一层上,则将该关键字用其在B-树中的后继替代,然后再删除其后继元素,即将需要处理的情况统一转化为在含有信息的最后一层再进行删除运算。
 
       查找
        1)顺序查找
        顺序查找又称线性查找,顺序查找的过程是从线性表的一端开始,依次逐个与表中元素的关键字值进行比较,如果找到其关键字与给定值相等的元素,则查找成功;若表中所有元素的关键字与给定值比较都不成功,则查找失败。
        2)折半查找
        折半查找的过程是先将给定值与有序线性表中间位置上元素的关键字进行比较,若两者相等,则查找成功;若给定值小于该元素的关键字,那么选取中间位置元素关键字值小的那部分元素作为新的查找范围,然后继续进行折半查找;如果给定值大于该元素的关键字,那么选取比中间位置元素关键字值大的那部分元素作为新的查找范围,然后继续进行折半查找,直到找到关键字与给定值相等的元素或查找范围中的元素数量为零时结束。
        3)分块查找
        在分块查找过程中,首先将表分成若干块,每一块中关键字不一定有序,但块之间是有序的。此外,还建立了一个索引表,索引表按关键字有序。分块查找过程需分两步进行:先确定待查记录所在的块;然后在块中顺序查找。
        4)哈希表及其查找
        根据设定的哈希函数H(key)和处理冲突的方法,将一组关键字映射到一个有限的连续地址集上,并以关键字在地址集中的像作为记录在表中的存储位置,这种表称为哈希表,也称散列表。这一过程所得到的存储位置称为散列地址,由此形成的查找方法称为散列查找。
   题号导航      2019年上半年 数据库系统工程师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第7题    在手机中做本题