填空题在一棵高度为h的B—树中,叶子结点处于第()层,当向该B—树中插入一个新关键码时,为查找插入位置需读取()个结点。
填空题
在一棵高度为h的B—树中,叶子结点处于第()层,当向该B—树中插入一个新关键码时,为查找插入位置需读取()个结点。
参考解析
解析:
B-树的叶子结点可以看作是外部结点(即查找失败)的结点,通常称为外结点。实际上这些结点不存在,指向这些结点的指针为空,B-树将记录插入在终端结点中。
相关考题:
下面关于B树运算的叙述中,正确的是A.若插入过程中根结点发生分裂,则B树的高度加1B.每当进行插入运算,就往B树的最下面一层增加一个新结点C.若要删除的关键码出现在根结点中,则不能真正删除,只能做标记D.删除可能引起B树结点个数减少,但不会造成B树高度减小
已知二叉树T的结点形式为(lling,data,count,rlink),在树中查找值为X的结点,若找到,则记数(count)加1,否则,作为一个新结点插入树中,插入后仍为二叉排序树,写出其非递归算法。
当在二叉排序树中插入一个新结点时,若树中不存在与待插入结点的关键字相同的结点,且新结点的关键字小于根结点的关键字,则新结点将成为() A.左子树的叶子结点B.左子树的分支结点C.右子树的叶子结点D.右子树的分支结点
阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树。 (1)若它的左子树非空,则左子树上所有结点的值均小于根结点的值。 (2)若它的右子树非空,则右子树上所有结点的值均大于根结点的值。 (3)左、右子树本身就是两棵二叉查找树。 二叉查找树是通过依次输入数据元素并把它们插入到二叉树的适当位置上构造起来的,具体的过程是:每读入一个元素,建立一个新结点,若二叉查找树非空,则将新结点的值与根结点的值相比较,如果小于根结点的值,则插入到左子树中,否则插入到右子树中;若二叉查找树为空,则新结点作为二叉查找树的根结点。 根据关键码序列{46,25,54,13,29,91}构造一个二叉查找树的过程如图4-1所示。设二叉查找树采用二叉链表存储,结点类型定义如下: typedef int KeyType; typedef struct BSTNode{ KeyType key; struct BSTNode *left,*right; }BSTNode,*BSTree; 图4-1(g)所示二叉查找树的二叉链表表示如图4-2所示。图4-2 函数int InsertBST(BSTree *rootptr,KeyType kword)功能是将关键码kword插入到由rootptr指示出根结点的二叉查找树中,若插入成功,函数返回1,否则返回0。【C代码】 int lnsertBST(BSTree*rootptr,KeyType kword) /*在二叉查找树中插入一个键值为kword的结点,若插入成功返回1,否则返回0; *rootptr为二叉查找树根结点的指针 */ { BSTree p,father; (1) ; /*将father初始化为空指针*/ p=*rootptr; /*p指示二叉查找树的根节点*/ while(p (2) ){ /*在二叉查找树中查找键值kword的结点*/ father=p; if(kword<p->key) p=p->left; else p=p->right; } if( (3) )return 0; /*二叉查找树中已包含键值kword,插入失败*/ p=(BSTree)malloc( (4) ); /*创建新结点用来保存键值kword*/ If(!p)return 0; /*创建新结点失败*/ p->key=kword; p->left=NULL; p->right=NULL; If(!father) (5) =p; /*二叉查找树为空树时新结点作为树根插入*/ else if(kword<father->key) (6) ; /*作为左孩子结点插入*/ else (7) ; /*作右孩子结点插入*/ return 1; }/*InsertBST*/
下面关于B树运算的叙述中,正确的是A.若插入过程甲根结点发生分裂,则B树的高度加1B.每当进行插入运算,就往B树的最下面一层增加一个新结点C.若要删除的关键码出现在根结点中,则不能真正删除,只能做标记D.删除可能引起B树结点个数减少,但不会造成B树高度减小
阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树。(1)若它的左子树非空,则左子树上所有结点的值均小于根结点的值。(2)若它的右子树非空,则右子树上所有结点的值均大于根结点的值。(3)左、右子树本身就是两棵二叉查找树。二叉查找树是通过依次输入数据元素并把它们插入到二叉树的适当位置上构造起来的,具体的过程是:每读入一个元素,建立一个新结点,若二叉查找树非空,则将新结点的值与根结点的值相比较,如果小于根结点的值,则插入到左子树中,否则插入到右子树中;若二叉查找树为空,则新结点作为二叉查找树的根结点。根据关键码序列{46,25,54,13,29,91}构造一个二叉查找树的过程如图4-1所示。设二叉查找树采用二叉链表存储,结点类型定义如下:typedef int KeyType;typedef struct BSTNode{KeyType key;struct BSTNode *left,*right;}BSTNode,*BSTree;图4-1(g)所示二叉查找树的二叉链表表示如图4-2所示。函数int InsertBST(BSTree *rootptr,KeyType kword)功能是将关键码kword插入到由rootptr指示出根结点的二叉查找树中,若插入成功,函数返回1,否则返回0。【C代码】int lnsertBST(BSTree*rootptr,KeyType kword)/*在二叉查找树中插入一个键值为kword的结点,若插入成功返回1,否则返回0;*rootptr为二叉查找树根结点的指针*/{BSTree p,father;(1) /*将father初始化为空指针*/p=*rootptr; /*p指示二叉查找树的根节点*/while(pif(kword<p->key)p=p->left;elsep=p->right;}if((3))return 0; /*二叉查找树中已包含键值kword,插入失败*/ p=(BSTree)malloc((4)); /*创建新结点用来保存键值kword*/If(!p)return 0; /*创建新结点失败*/p->key=kword;p->left=NULL;p->right=NULL; If(!father)(5) =p; /*二叉查找树为空树时新结点作为树根插入*/elseif(kword<father->key)(6);/*作为左孩子结点插入*/else(7);/*作右孩子结点插入*/return 1;}/*InsertBST*/
填空题向一棵B_树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度()。