作业二(5.9)(二叉树)

1.存在一棵总共有2016个结点的二叉树,其中有16个结点只有一个孩子。F

叉树总共有2016个结点,满二叉树总共的结点数为2的n次方-1,n是满二叉树的层数,所以该二叉树满的情况下是2048-1=2047,而2047-2016=31,也就是说,少了31个叶子结点,题目中16个结点只有一个孩子,那就先从16个叶节点上一层的父节点分别拿一个孩子,于是还剩15个结点未处理,15个除以2有余数(那就是多的一个要么导致剩17个只有一个孩子,要么15个只有一个孩子,不可能出现16个只有一个结点的孩子) 31-16是奇数则不存在

2.有一个四叉树,度2的结点数为4,度3的结点数为2,度4的结点数为1。问该树的叶结点个数是多少?B

A.8              B.12            C.18            D.20

n=N2+N3+N4+N0=2*N2+3*N3+4*N4+1(n1题目没说,则认为是0)

解得N0=12

3.具有1102个结点的完全二叉树一定有__个叶子结点。B

A.79        B.551       C.1063                   D.不确定

n=n1 + 2*n2 + 1 ,二叉树中n1为1或0

①n1=1  ,n=1102=1+1+2*n2 , n2=550,所以n0= n2 +1 =551;

②n1=0,n2不为整数,舍

4.哈夫曼树 见收藏夹

5.已知一棵完全二叉树的第9层(设根为第1层)有100个叶结点,则该完全二叉树的结点个数最多是:B         A.311        B.823        C.847        D.无法确定

假设第九层铺满 考虑贪心最大化的情况,有孩子节点 = 2**(9-1)-100=256-100=156

n = 156*2 + 2**9 - 1 =823

6.对以下算法功能最准确的描述是()

int  fun1(BTreeNode *BT, ElemType e){
int  n1, n2;
         if (BT==NULL)  return 0;
         if (BT->data==e)  return 1;
         n1 = fun1(BT->left, e);
         if (n1>=1)  return n1+1;
         n2 = fun1(BT->right, e);
         if (n2>=1)  return n2+1;
         return 0;
}

A.判断二叉树根结点值是否为e                                B.判断二叉树是否存在值为e点                       C.求二叉树中值为e结点的层次                               D.求二叉树值为e的结点的个数

C,查找到值为e的结点就返回并从底层到上层每层递增1

7.用双亲存储结构表示树,其优点之一是比较方便____。

A.找指定结点的双亲结点                                                B.找指定结点的孩子结点

C.找指定结点的兄弟结点                                                D.判断某结点是不是叶子结点

双亲存储结构表示树,每个节点包含自身信息以及其父节点在数组中的位置,这样就可以方便地找到指定结点的双亲结点。同时,也可以通过遍历整个数组来查找指定结点的孩子结点和兄弟结点。但是,判断某结点是否为叶子结点需要遍历整棵树。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值