数据结构 树、图、查找、排序习题整合

第六章 树和森林

  1. 二叉树的第k层节点数最多为(2k-1)。
  2. 将森林F 转换为对应的二叉树T,F中叶结点的个数等于()
    【答】二叉树变森林方法为右孩子A变兄弟节点。若该孩子节点A有左孩子,则带着左孩子一起分离形成独立的树。若无左孩子,则成为孤立节点。
  3. 若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指针。在这种存储结构中,n个结点的二叉树共有(2n)个指针域,其中有(n-1)个指针域是存放了地址,有(n+1)个指针是空指针。
  4. 设某棵二叉树中度数为0的节点数N0,度数为1的节点数N1,则,该二叉树中度数为2的节点数为(N0-1);若采用二叉链表作为存储结构,则二叉树中共有(2N0+N1)个空指针。
  5. 具有 10个叶结点的二叉树中有 ( )个度为2的结点。
    A.8 B.9 C.10 D.11
    【答】B
  • 假设在二叉树中度为0的结点有n0个,度为1的结点有n1个,度为2的结点有n2个,
  • 则总的结点数n=n0+n1+n2;总的分支数B=n1+2n2。
  • 又因为B=n-1,所以在二叉树中 n2=n0-1。
  1. 设给定权值总数有n个,其哈夫曼树的结点总数为()。
    A.不确定 B. 2n C. 2n+1D. 2n-1
    【答】D
  • 已知叶子结点数为n,则根据上题得到度为2的结点数为n-1。
  • 而在哈夫曼树中只有度为0的结点和度为2的结点,所以结点总数为:2n-1。
  1. 一个具有1025个结点的二叉树的高度h可能为()。
    A.8 B.9 C.12 D.1026
    【答】C
    根据二叉树的性质3,含有n个结点的二叉树的高度范围在⌈log2(n+1)⌉到n之间。所以具有1025个结点的二叉树的高度最小为11,最大为1025。因此,只有C符合要求。
  2. 一棵二叉树高度为h,所有结点的度 或为0或为2,则这棵二叉树最少有(2h-1)个结点。
  • 要达到结点数最少,且所有结点的度为0或为2,则这棵二叉树中,除第一层只有一个根结点外,其他h-1层都只有2个结点,所以总结点数为2h-1。
  1. 一棵二叉树的先序序列为ABCDEFG,它的中序序列可能是()。
    A. CABDEFG B.ABCDEFG C. DACEFBG D. ADCFBEG
    【答】B
    如果二叉树的先序序列为 ABCDEFG,则以答案A、C、D选项作为中序序列都无法构造出相应的二叉树。
  2. 将一棵树 t 转换二叉树 h ,则t的后根遍历等于h的()。
    A.先序遍历B.中序遍历C.后序遍历D.层次遍历
    【答】B
  3. 一棵非空二叉树的先序序列与后序序列正好相反,则该二叉树一定满足()
    A.所有的结点均无左孩子 B.所有的结点均无右孩子 C.只有一个叶子结点 D.是任意一棵二叉树
    【答】C
  • 如果一棵二叉树只有一个叶子结点,则说明这棵二叉树中除叶子结点外其他结点有且只有唯一的孩子(左孩子或右孩子)结点。对于这样的二叉树,其先序序列和后序序列一定正好相反。
  • 再来看有多个叶子结点的情况,以有2个叶子结点的二叉树为例(可以推广到有更多叶子结点的情况),证明其先序序列与后序序列不能正好相反。设二叉树有两个叶子结点B和C,它们有离它们最近的共同祖先A(B在A的左子树,C在A的右子树)。根据先序遍历的定义,在先序序列中这3 个结点相对次序为A、…、B、…、C;根据后序遍历的定义,在后序序列中这3个结点相对次序为B、.、C、…A。可见,在先序序列和后序序列中,叶子结点B、C之间相对次序不变。所以,对于有2个叶子的二叉树,其先序序列不会是后序序列逆序。
  1. 在二叉树的先序序列、中序序列和后序序列中,所有叶子结点的先后顺序()
    A.都不相同C.完全相同B.先序和中序相同,而与后序不同屿 D.中序和后序相同,而与先序不同
    【答】C
  2. 一棵根结点没有左子树的二叉树在先序线索化后,其中空的指针域有()个。
    A.不确定 B.0 C. 1 D.2
    【答】D
  • 在线索二叉树中,空指针最多2个,且只可能出现在序列的第一个元素结点和最后一个元素结点(其他结点的指针要么指向左右孩子,要么作为线索指向前驱或后继)。
  • 因为,第一个元素没有前驱,则当其没有左孩子时,其左指针为空(前驱线索也不存在);最后一个元素没有后继,则当其没有右孩子时,其右指针为空(后继线索也不存在)。
  • 而在二叉树的先序遍历中,第一个被访问的结点一定是根结点,最后被访问 的结点一定是叶子结点。现在,根结点没有左子树,所以有2个空指针。其一是根结点的左指针,其二是先序序列最后一个结点的右指针。
  1. 从一个空堆开始依次插入34、46、19、12、17、25、38、 25、20,则最后建立的最小堆序列中最后一个元素的值为()。
    A.46 B.25 C.20 D.以上都不是
    【答】B
  • 按照最小堆插入算法,最后得到的最小堆序列为:12、17、25、20、19、34、38、46、 25.所以,选择B。
  1. 对于有n个结点的二叉树,其高度为logg2n。(错)
    根据二叉树的性质3,有n个结点的二叉树,其高度最小值为⌈log2(n+1)⌉,最大值为n。
  2. 一棵树的叶结点在先根序历和后根序历中,相对位置不变。(对)
  3. 对后序线索树进行后序遍历时必须用栈。(错)
  • 当二叉树中任何结点至多只有左子树时,每个结点的右指针都作为线索指向其后继结点。此时,从后序序列的第一个结点开始,通过后继线索就可以完成后序遍历。
  1. 对先序线索树可以不用栈实现先序遍历。(对)
  2. 在完全二叉树中,若一个结点没有左孩子,则它必是叶子结点。(对)
  • 在完全二叉树中,由于同一层上结点是连续分布的。因此,如果一个结点没有左孩子,则其必定没有右孩子。所以,它一定是叶子结点。
  1. 一棵树的叶子数一定等于其对应二叉树的叶子数。(错)
  • 根据树转换为二叉树的规则,二叉树中结点的左指针用于指向其树中第一个孩子结点,右指针用于指向其树中下一个兄弟结点。因此,二叉树中叶子结点,在对应树中必定没有孩子结点(是叶子)且没有下一个兄弟。
  1. 非空的二叉树一定满足:某结点p若有左孩子,则在中序序列中p的前驱结点一定没有右孩子。(对)
    如果一个结点有左子树,根据中序遍历的定义,该结点的前驱结点一定是其左子树按中序遍历最后被访问的结点。而对一棵子树进行中序遍历最后访问的结点一定没有右子树。所以,这个叙述是正确的。
  2. 在中序线索树中,每一非空的线索均指向其祖先结点。(对)
  • 根据中序遍历的定义,在中序序列中,一个结点的前驱结点不可能在它的右子树中,只能在其左子树或祖先结点中。
  • 如果一个结点有左子树,则其左指针将作为孩子指针指向其左孩子;否则,其左指针将作为前驱线索,指向其前驱结点,它只能在祖先结点或者为空(中序序列的第一个结点没有前驱)。
  • 同样,一个结点的右指针作为后序线索(没有右子树)时,其后继结点一定在其祖先结点中。
  1. 二叉树中序线索化后,不存在空指针域。(错)
  • 应该说对非空二叉树线索化后一定存在两个空指针域。根据中序遍历的定义,在二义树的中序序列中,第一个结点一定没有左孩子,最后一个结点一定没有右孩子。
  • 所以,对于中序序列的第一个结点来说,其左指针一定是空的(它没有左孩子,也没有前驱结点):对于中序序列的最后一个结点来说,其右指针一定是空的(它没有右孩子,也没有后继结点)。而其他的左指针要么指向左孩子结点,要么指向前驱结点:其他的右指针要么指向右孩子结点,要么指向后继结点。
  1. 哈夫曼树的结点个数不可能是偶数。(对)
    根据哈夫曼树的构造算法,在哈夫曼树中只有度为2和度为0的结点。又由于在一棵二叉树中度为2的结点数一定比度为0的结点数少1。所以,在有n个叶子结点的哈夫曼树中,总结点数为2*n-1,它一定是奇数。
  2. 具有 256个结点的完全二叉树的深度为(9)
  3. 一棵有20个结点的二叉树,其叶子结点有8个,则度为1的结点有(5)个。
    叶子结点有8个,则度为2的结点有7个。所以,度为1的结点数为:20-8-7=5。
  4. 设F是由T、T2、T3三棵树组成的森林,与F对应的二叉树为B,已知T1、T2、T3的结点数分别为n1、n2和 n3,则二叉树B的根结点的左子树中有()个结点,根结点的右子树中有() 个结点。
    【答】n-1, n2+n3
  5. 设一棵完全二叉树的叶子结点数为k,最后一层结点数为2,则该二叉树的高度为()。
    【答】log2(k-1)+2
  • 设完全二叉树的高度为h。由于最后一层上有2个结点,且叶子总数为k,所以最后第二层((h-1)层)上的结点数为k-1。又因为二叉树第(h-1)层上的结点总数为2h-2,因此,这棵二叉树的高度h为 10g2(k-1)+2。
  1. 一棵二叉树的先序序列为 BEFCGDH,中序序列为 FEBGCHD,则它的高度为(4)。
  2. 已知完全二叉树的第7层有 10 个叶子结点,则整个二叉树的结点数最多是(235)
    根据已知:完全二叉树的第7层有10个叶子结点,且整个二叉树的结点数要达到最大值。因此,该二叉树的高度为8,且比高度为8的满二叉树少20 个叶子结点(使第7层有10个叶子结点)。所以,二叉树的结点数为:28-1-20=235。
  3. 树的先根序列和其对应二叉树的()序列相同;后根序列和对应二叉树的()序列相同。
    【答】先序,中序
  4. 设一棵后序线索树的高为50,结点x是树中的一个结点,其双亲为结点y,y的右子树高度是31x是y的左孩子,则确定x的后继最多需经过()个中间结点(不含后继及x本身)。
    【答】31
  • 由于x是y的左孩子,根据后序遍历的定义,x的后继应为y的右子树中按后序遍历第一个访问的结点,而此结点为y的右子树中最左下的叶结点。
  • 所以,确定x的后继需要经过x的双亲y,再找y的右子树中最左下的叶结点。由于y的右子树高度是31,所以确定x的后继最多需经过31个中间结点。
  1. 一棵满二叉树的结点个数为20到40之间的素数,此二叉树的叶子结点有()个。
    【答】16
  • 设满二叉树的高度为h,则它的结点总数为2h-1。
  • 已知满二叉树的结点个数为20到40之间的素数,因此,符合要求的结点数为31,满二叉树的高度为5。所以,叶子结点数为16。
<
  • 8
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值