一棵查找二叉树,其结点A、B、C、D、E、F依次存放在一个起始地址为n(假定地址以字节为单位顺序编号)的连续区域中,每个结点占4个字节:前两个字节存放结点值,后两个字节依次放左指针、右指针。
    若该查找二叉树的根结点为E,则它的一种可能的前序为(1),相应的层次遍历为(2)。
    在以上两种遍历情况下,结点C的左指针Lc的存放地址为(3),Lc的内容为(4)。结点A的右指针Ra的内容为(5)。
    
    (1)A.EAFCBD  B.EFACDB  C.EABCFD  D.EACBDF
    (2)A.EAFCBD  B.EFACDB  C.EABCFD  D.EACBDF
    (3)A.n+4     B.n+10    C.n+12    D.n+13
    (4)A.n+9     B.n+8     C.n+12    D.n+16
    (5)A.n+4     B.n+8     C.n+12    D.n+16 ?                     
    
    这道题我不是很明白,谁能给我个详细的解释。

解决方案 »

  1.   

    可以从题设得到一些条件,比如A有右子树,C有左子树,等。
    但是它所谓的依次存放是怎样的“依次”,如果是按A、B、C、D、E、F
    那么(3)答案应该是n+9,没有一个对的。
      

  2.   

    我搞错了,结果出来了:
    (3)答案肯定是C,这个不要说了n+8+2
    (4)答案也是C,只有选项C和D是节点的开始地址,D指的是E节点,显然不对,所以是C。
    (1)答案是B,由于C的左子树是D,所以先根序列里肯定有CD子序列,而只有B满足这个条件。
    (2)由(1)得到,并考虑A有右子树,答案是B
    (5)自然是B喽,树如下
         E 
        / \
       F  A
           \
           C
          / \
         D  B
      

  3.   

    正因为“条件不足”,所以题目中用了“可能”二字。第1题:请注意,先序的顺序是根->左->右。题目中假定根为E,那么根据二叉查 找树的性质,E的右孩子必定是F(因为F>E)。所以,这种情况下,先序的序列必然是E->E的左子树->F。查看四个选项,只有D符合。ACBD是E的左子树的先序序列。因此,整个树如下:
                E
              /   \
             A     F
              \
               C
             /   \
            B     D
    画出了整个树,第二题更好做,直接看出:选A。
      

  4.   

    写错了,第(3)题答案是B n+8+2 = n+10
      

  5.   

    剩余3道题根本不用动脑子,画出内存单元布局,数一数就出来了:
    第三题:B  第四题:A  第五题:B解释:
    C节点的起始地址是n+8,所以LC的地址是n+10;C节点的左孩子是B,所以LC的内容就是B的起始地址:n+4;A的右孩子是C,所以RA的内容是C的起始地址:n+8。做完。注意:
    楼主把第四题的A选项抄错了,害得我以为题目出错了,最后上网翻了半天翻到原来是01年的高程试题,楼主刚好把正确选项搞错了,faint。
      

  6.   

    我看了书了,我没有抄错,可能是书印错了吧!
    不过codewarrior这么热心,我加多五十分给你补偿吧!  ^o^