若一棵二叉中只有叶结点和左、右子树皆非空的结点,设叶结点的个数为k,则左、右子树皆非空的结点个数是【 】。
第1题:
若一颗二叉树中只有叶结点和左右子树皆非空的结点,设叶结点的个数为n,则左右子树皆非空的结点个数为__________。
第2题:
若一棵二叉树中只有叶节点和左、右子树皆非空的节点,设叶节点的个数为k,则左、右子树皆非空的节点个数是【 】。
第3题:
若一棵二叉树中只有叶结点和左、右子树皆非空的结点,设叶结点的个数为n,则左、右子树皆非空的结点个数是 ______。
第4题:
在非空二叉树的中序遍历序列中,二叉树的根结点的左边(40)。
A.只有左子树上的所有结点
B.只有左子树上的部分结点
C.只有右子树上的所有结点
D.只有右子树上的部分结点
第5题:
阅读以下说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点;否则,从树根的左子树根出发,沿结点的左
子树分支向下查找,直到某个结点不存在左子树时为止,该结点即为此二叉树的“最左下”结点。例如,下图所示的以 A为根的二叉树的“最
左下”结点为D,以C为根的子二叉树中的“最左下”结点为C。

二叉树的结点类型定义如下:
typedef stmct BSTNode{
int data;
struct BSTNode*lch,*rch;//结点的左、右子树指针
}*BSTree;
函数BSTree Find Del(BSTree root)的功能是:若root指向一棵二叉树的根结点,则找出该结点的右子树上的“最左下”结点*p,并从
树于删除以*p为根的子树,函数返回被删除子树的根结点指针;若该树根的右子树上不存在“最左下”结点,则返回空指针。
【函数】
BSTrce Find_Del(BSTreeroot)
{ BSTreep,pre;
if ( !root ) return NULL; /*root指向的二叉树为空树*/
(1); /*令p指向根结点的右子树*/
if ( !p ) return NULL;
(2); /*设置pre的初值*/
while(p->lch){ /*查找“最左下”结点*/
pre=p;p=(3);
}
if ((4)==root) /*root的右子树根为“最左下”结点*/
pre->rch=NULL;
else
(5)=NULL; /*删除以“最左下”结点为根的子树*/
reurn p;
}
第6题:
阅读以下说明、C函数和问题,将解答填入答题纸的对应栏内。
【说明】
二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树:
●若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;
●若它的右子树非空,则其右子树上所有结点的键值均大于根结点的键值;
●左、右子树本身就是二叉查找树。
设二叉查找树采用二叉链表存储结构,链表结点类型定义如下:
typedefstructBiTnode{
intkey_value;/*结点的键值,为非负整数*/
structBiTnode*left,*right;/*结点的左、右子树指针*/
}*BSTree;
函数find_key(root,key)的功能是用递归方式在给定的二叉查找树(root指向根结点)中查找键值为key的结点并返回结点的指针;若找不到,则返回空指针。
【函数】
BSTreefind_key(BSTreeroot,intkey)
{
if((1))
returnNULL;
else
if(key==root->key_value)
return(2);
elseif(keykey_value)
return(3);
else
return(4);
}
【问题1】
请将函数find_key中应填入(1)~(4)处的字句写在答题纸的对应栏内。
【问题2】
若某二叉查找树中有n个结点,则查找一个给定关键字时,需要比较的结点个数取决于(5).
答案:
(1)!root,或root=0,或root==NULL
(2)root
(3)find_key(root→left,key)
(4)find_key(root→right,key)
(5)该关键字对应结点在该二叉查找树所在层次(数)或位置,或者该二叉树中从根结点到该关键字对应结点的路径长度
解析:
本题考查数据结构的应用、指针和递归程序设计。
根据二叉查找树的定义,在一棵二叉查找树上进行查找时,首先用给定的关键字与树根结点的关键字比较,若相等,则查找成功;若给定的关键字小于树根结点的关键字,则接下来到左子树上进行查找,否则接下来到右子树上进行查找。如果在给定的二叉查找树上不存在与给定关键字相同的结点,则必然进入某结点的空的子树时结束查找。因此,空(1)处填入"!root"表明进入了空树;空(2)处填入"root"表明返回结点的指针;空(3)处填入"find_key(root→left,key)"表明下一步到左子树上继续查找;空(4)处填入"find_key(root→right,key)"表明下一步到右子树上继续查找。
显然,在二叉排序树上进行查找时,若成功,则查找过程是走了一条从根结点到达所找结点的路径。例如,在下图所示的二叉排序树中查找62,则依次与46、54、101和62作了比较。因此,在树中查找一个关键字时,需要比较的结点个数取决于该关键字对应结点在该二叉查找树所在层次(数)或位置。
第7题:
对一棵非空二叉树进行中序遍历,则根结点的左边( )
A.只有左子树上的所有结点
B.只有右子树上的所有结点
C.只有左子树上的部分结点
D.只有右子树上的部分结点
第8题:
●在一棵非空二叉排序树中,关键字最小的结点的(41)。
(41)A.左子树一定为空、右子树不一定为空
B.左子树不一定为空、右子树一定为空
C.左子树和右子树一定都为空
D.左子树和右子树一定都不为空
第9题:
二叉排序树或者是一棵空树,或者是具有下列性质的一棵二叉树:(1)若左子数不空,则左子树所有结点的值();(2)若右子数不空,则右子树所有结点的值(); (3)左右子树又分别是()。
均小于根结点的值;均大于根结点的值;二叉排序树
略
第10题:
二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。
第11题:
设一棵完全二叉树具有1000个结点,则此完全二叉树有()个叶子结点,有()个度为2的结点,有()个结点只有非空左子树,有()个结点只有非空右子树。
第12题:
第13题:
此题为判断题(对,错)。
第14题:
若由树转化得到的二叉树是非空的二叉树,则二叉树形状是()。
A、根结点无右子树的二叉树
B、根结点无左子树的二叉树
C、根结点可能有左子树和右子树
D、各结点只有一个子女的二叉树
第15题:
下面关于二叉树的叙述正确的是(40)。
A.一棵二叉树中叶子结点的个数等于度为2的结点个数加1
B.一棵二叉树中的结点个数大于0
C.二叉树中任何一个结点要么是叶,要么恰有两个子女
D.二叉树中,任何一个结点的左子树和右子树上的结点个数一定相等
第16题:
对于二叉查找树(Binary Search Tree),若其左子树非空,则左子树上所有结点的值均小于根结点的值;若其右子树非空,则右子树上所有结点的值均大于根结点的值。左、右子树本身就是两棵二叉查找树。因此,对任意一棵二叉查找树进行(61)遍历可以得到一个结点元素的递增序列。在具有n个结点的二叉查找树上进行查找运算,最坏情况下的算法复杂度为(62)。
A.先序
B.中序
C.后序
D.层序
第17题:
若一棵二叉树中只有叶节点和左、右子树皆非空的节点,设叶节点的个数为1,则左、右子树皆非空的节点个数为【 】。
第18题:
在一非空二叉树的中序遍历序列中,根结点的右边(40)。
A.只有右子树上的所有结点
B.只有右子树上的部分结点
C.只有左子树上的部分结点
D.只有左子树上的所有结点最左子树
第19题:
在一非空二叉树的中序遍历序列中,根结点的右边( )
A.只有右子树上的所有结点
B.只有右子树上的部分结点
C.只有左子树上的所有结点
D.只有左子树上的部分结点
第20题:

第21题:
前序遍历序列与后序遍历序列相同的二叉树为()
第22题:
在非空二叉树的中序遍历序列中,二叉树的根结点的左边应该()
第23题: