1.关于二叉搜索树特性说法错误的是(D )
A.二叉搜索树最左侧的节点一定是最小的
B.二叉搜索树最右侧的节点一定是最大的
C.对二叉搜索树进行中序遍历,一定能够得到一个有序序列
D.二叉搜索树的查找效率为O(log_2N)
解析:二叉搜索树的概念:
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:
1. 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值
2. 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值
3. 它的左右子树也分别为二叉搜索树
从概念中可以得出以下性质:
1. 二叉搜索树中最左侧节点一定是最小的,最右侧节点一定是最大的
2. 对二叉搜索树进行中序遍历,可以得到一个有序的序列
D:错误,二叉搜索树最差情况下会退化为单支树,其查找的效率为O(N)
2.将整数序列(7-2-4-6-3-1-5)按所示顺序构建一棵二叉排序树a(亦称二叉搜索树),之后将整数8按照二叉排序树规则插入树a中,请问插入之后的树a中序遍历结果是(A)
A.1-2-3-4-5-6-7-8
B.7-2-1-4-3-6-5-8
C.1-3-5-2-4-6-7-8
D.1-3-5-6-4-2-8-7
E.7-2-8-1-4-3-6-5
F.5-6-3-4-1-2-7-8
解析:插入之后的树仍旧是二叉搜索树,因此只要是有序的结果则正确,而有序的结果只有A。
3.给定n个节点的平衡二叉搜索树,每个节点的值是整数。给定一个整数,在树中找出与该整数最接近的节点的最小算法复杂度是(A)
A.Θ(logn)
B.Θ(n^2)
C.Θ(nlogn)
D.Θ(n)
E.Θ(1)
解析:二叉平衡搜索树是二叉树,同时也是平衡树,即:每个节点左右子树高度差的绝对值不超过1,换句话说每个节点左右子树顶多差一层。
在平衡二叉树中查找元素时,找的规则和二叉搜索树的规则一样,最差情况下比较的是树的高度
二叉平衡搜索树的高度为:O(logn) 以2为底
4.下面的哪个序列可能是二叉搜索树中序遍历的结果? (B)
A.7 3 8 2 9 4 11
B.2 3 4 7 8 9 11
C.11 2 9 3 8 4 7
D.以上均可
解析:二叉搜索树有个非常重要的特性:中序遍历的结果是有序的。
在二分搜索树中进行中序遍历,得到一个完全升序的数组(有序数组)。
5.下面关于二叉搜索树正确的说法是(C )
A.待删除节点有左子树和右子树时,只能使用左子树的最大值节点替换待删除节点
B.给定一棵二叉搜索树的前序和中序遍率历结果,无法确定这棵二叉搜索树
C.给定一棵二叉搜索树,根据节点值大小排序所需时间复杂度是线性的
D.给定一棵二叉搜索树,可以在线性时间复杂度内转化为平衡二叉搜索树
解析:
A:错误,当待删除节点的左右子树均存在时,既可以在左子树中找一个最大的节点作为替代节 点,也可以在右子树中找一个最小的节点作为替代节点,左右子树中都可以找替代节点
B:错误,根据前序遍历和中序遍历,是可以确定一棵树的结构,使用两个遍历结果确定树的结构, 其中有一个遍历结果必须要是中序遍历结果。
C:正确,二叉搜索树遍历一遍,就可以得到一个有序序列,因此,时间复杂度为O(N)
D:错误,这里面还需要牵扯到旋转等其他操作,时间复杂度不是线性的