基础错题集

来源:互联网 发布:js获取当前城市 编辑:程序博客网 时间:2024/06/05 04:44
1.下列数据结构中,不属于二叉树的是()      B树   哈夫曼树   二叉搜索数   AVL树
B树:B树为多路查找树,每一个结点的孩子树可以多于2个,每一个结点处可以存储多个元素
哈夫曼树:哈夫曼树(Huffman tree),又名最优树,指给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。
AVL树::AVL树中任何节点的两个子树的高度最大差别为1。
2.哪个类可用于处理 Unicode? 
InputStreamReader
BufferedReader
Writer
PipedInputStream
解析:inputstream可以用于处理Unicode


查看解析
执行如下代码后输出结果为( )


public class Test {
 public static void main(String[] args) {
     System.out.println("return value of getValue(): " + getValue());
 }
 public static int getValue() {
     int i = 1;
     try {
         i = 4;
     } finally{
         i++;
         return i;
     }
     }
 }
正确答案: C   


return value of getValue(): 1
return value of getValue(): 4
return value of getValue(): 5
其他几项都不对
解析:如果是return i++;
那么结果为4,先执行return,在执行i++;
3.list是一个ArrayList的对象,哪个选项的代码填到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?()


Iterator it = list.iterator();
int index = 0;
while (it.hasNext())
{
    Object obj = it.next();
    if (needDelete(obj))  //needDelete返回boolean,决定是否要删除
    {
        //todo delete
    }
    index ++;
}


正确答案: A   


it.remove();
list.remove(obj);
list.remove(index);
list.remove(obj,index);
解析:在foreach中不能调用remove方法,因为list.size(),发生了变化,会导致错误。
所以,如果你想在循环语句中删除集合中的某个元素,就要用迭代器iterator的remove()方法,因为它的remove()方法不仅会删除元素,还会维护一个标志,用来记录目前是不是可删除状态,例如,你不能连续两次调用它的remove()方法,调用之前至少有一次next()方法的调用。
正确答案: A B D   你的答案: D E (错误)
4.下面哪些赋值语句是正确的(ABD)
A long test=012
B float f=-412
C int other =(int)true
D double d=0x12345678
E byte b=128
A和B中long和float,正常定义需要加l和f,但是long和float属于基本类型,会进行转化,所以不会报出异常。AB正确
boolean类型不能和任何类型进行转换,会报出类型异常错误。所以C错。
D选项可以这样定义,D正确。

E选项中,byte的取值范围是-128—127。报出异常: cannot convert from int to byte.所以E选项错误。

5.

设F是一个森林,B是由F变换得到的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有()个
答案为n+1个
节点的度:一个节点含有的子树的个数称为该节点的度;
叶节点或终端节点:度为0的节点称为叶节点;
非终端节点或分支节点:度不为0的节点;
双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;
孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
兄弟节点:具有相同父节点的节点互称为兄弟节点;
树的度:一棵树中,最大的节点的度称为树的度;
节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
树的高度或深度:树中节点的最大层次;
堂兄弟节点:双亲在同一层的节点互为堂兄弟;
节点的祖先:从根到该节点所经分支上的所有节点;
子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
森林:由m(m>=0)棵互不相交的树的集合称为森林;
右指针域即右结点
6。如果进栈序列为el,e2,e3,e4,则可能的出栈序列是 (    ) 

可以先进去,再出去,e1进来,e2进来,e2出去,e3进来,e4进来,e4出去,e3出去,e1出去
所以答案可以是e2,e4,e3,e1

7.线索二叉链表是利用()域存储后继结点的地址
A lchild  B data  C rchild  D root

解析:为了得到前驱与后继的信息,最直观的想法是在每个结点上添加两个指针域,分别指向结点在遍历时的前驱及后继。然而,这样会使存储密度大大降低,而在有n个结点的二叉树中有n+1个空链域,故可利用这些空链域来存放结点的前驱及后继信息,并作如下规定:若结点有左子树,则其leftChild域指向其左孩子,否则,令leftChild指向其前驱;若结点有右子树,则其rightChild域指向其右孩子,否则,令rightChild指向其后继。

为了避免混淆,现对上章中的结点结构作适当改动,改动后如下:

leftChiltleftTagelementrightTagrightChild

并规定:leftTag取值为false时,指示结点的左孩子,取值为true时,指示结点的前驱;rightTag取值为false时,指示结点的右孩子,取值为true时,指示结点的后继。

线索链表:以上述结点结构构成的二叉链表作为二叉树的存储结构,其中指示结点前驱及后继信息的指针称作线索,加上线索的二叉树称为线索二叉树。 
线索化:对二叉树以某种次序遍历使其变为线索二叉树的过程。 
线索化的实质:修改空指针(将二叉链表中的空指针改为指向前驱或后继的线索)。

8.一棵有124个叶节点的完全二叉树,最多有( )个节点。
答案:248个
n个叶子结点,(n-1)个度为2的结点,最多有一个度为1的结点,一共2n个结点
9.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为()。
答案:
BA+180
以列为主,123456789101前前前前前前前前后后2前前前前前前前前后后3前前前前前前前前后后4前前前前前前前前后后5前前前前前前前这里后后6前前前前前前前后后后7前前前前前前前后后后8前前前前前前前后后后
10.设尾指针的循环链表表示队列,则入队和出队算法的时间复杂度均为O(1)()
答案:正确

11.

判断一包含n个整数a[]中是否存在i、j、k满足a[i] + a[j] = a[k]的时间复杂度为()
答案:O(n^2)
判断一包含n个整数a[]中是否存在i、j、k满足a[i] + a[j] = a[k]的时间复杂度为()
方法是先排序,然后确定C,对a和的b的值进行左右夹逼。
轮询C的次数是N,夹逼一次的次数是N,那么总的复杂度是N* N



判断一包含n个整数a[]中是否存在i、j、k满足a[i] + a[j] = a[k]的时间复杂度为()
原创粉丝点击