若某二叉树中的所有结点值均大于其左子树上的所有结点值,且小于右子树上的所有结点值,则该二叉树
A.前序序列
B.中序序列
C.后序序列
D.以上说法均可以
A.前序序列
B.中序序列
C.后序序列
D.以上说法均可以
(61)
A. 先序
B. 中序
C. 后序
D. 层序
(62)
A. O(n2
B. O(nlog2n)
C. O(log2n)
D. O(n)
A.前序遍历
B.中序遍历
C.后序遍历
D.按层次遍历
在非空二叉树的中序遍历序列中,二叉树的根结点的左边(40)。
A.只有左子树上的所有结点
B.只有左子树上的部分结点
C.只有右子树上的所有结点
D.只有右子树上的部分结点
在非空二叉树的中序遍历序列中,二叉树的根结点的左边应该 _______。
A.只有左子树上的所有结点
B.只有左子树上的部分结点
C.只有右子树上的所有结点
D.只有右子树上的部分结点
对一棵二叉树的中序遍历序列中,根结点的左边包括()。
A.左子树上的叶子结点
B.右子树上的所有结点
C.左子树上的所有结点
D.右子树上的叶子结点
一个具有m个结点的二叉树,其二叉链表结点(左、右孩子指针分别用left和right表示)中的空指针总数必定为(57)个。为形成中序(先序、后序)线索二叉树,现对该二叉链表所有结点进行如下操作:若结点p的左孩子指针为空,则将该左指针改为指向p在中序(先序、后序)遍历序列的前驱结点;若p的右孩子指针为空,则将该右指针改为指向p在中序(先序、后序)遍历序列的后继结点。假设指针s指向中序(先序、后序)线索二叉树中的某结点,则(58)。
A.m+2
B.m+1
C.m
D.m-1
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。
【说明】以下程序实现了二叉树的结点删除算法,若树中存在要删除的结点,则删除它,否则返回。 FindNode ()函数能够在二叉树中找到给定值的结点,并返回其地址和父结点。
【C++程序】
template < class T >
void BinSTree < T >: :Delete(const T& item)
{
TreeNode < T > * DelNodePtr, * ParNodePtr, * RepNodePtr;
if((DelNodePtr = FindNode (item,ParNodePtr)) = = NULL)
(1)
if(DelNodePtr→right = = NULL) //被删除结点只有一个子结点的情况
RepNodePtr = DelNodePtr→left;
else if(DelNodePtr→left = = NULL)
(2);
else // 被删除结点有两个子结点的情况
{
TreeNode < T >* PofRNodePtr = DelNodePtr;
RepNodePtr = DelNodePtr→left;
while(RepNodePtr→right ! = NULL)
{ //定位左子树的最右结点
PofRNodePtr =RepNodePtr;
RepNodePtr = RepNodePtr→right;
}
if(PofRNodePtr = = DelNodePtr) //左子树没有右子结点
(3);
else //用左子顷的最右结点替换删除的结点
{
(4)
RepNodePtr→left = DelNodePtr→left;
RepNodePtr→right = DelNodePtr→right;
}
}
if (5)//要删除结点是要结点的情况
root = RepNodePtr;
else if (DelNodePtr→data < ParNodePtr→Data)
ParNodePtr→left = RepNodePtr;
else
ParNodePtr→right =RepNodePtr;
FirstTreeNode (DelNodePtr ) ;//释放内存资源
size→;
}
A.不存在这样一颗二叉树,对其分别进行前序、后序和中序遍历,最终能够得到相同的结果
B.若非空二叉树中所有结点均没有左子树,那么分别对它进行前序遍历和中序遍历,最终可以得到相同的结果
C.若非空二叉树中所有结点均没有右子树,那么对它分别进行后序遍历和中序遍历,最终可以得到相同的结果
D.存在这样一颗二叉树,对其分别进行前序和后序遍历,最终能够得到相同的结果
A.(10,1024)
B.[10,1024]
C.(11,1024)
D.[11,1024]