小知识(完全二叉树)

完全二叉树

标签(空格分隔): 计算叶子节点个数
##某棵完全二叉树上有698个节点,则该二叉树的叶子节点数是多少?


###注:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。

此处输入图片的描述


完全二叉树是指这样的二叉树:
1、除最后一层外,每一层上的结点数均达到最大值;
2、在最后一层上只缺少右边的若干结点。更确切地说,如果一棵具有n 个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树 中编号为1~n的结点一一对应,这棵二叉树称为完全二叉树。
可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数。
由二叉树的性质可知:n0=n2+1,则n=n0+n1+n2(其中n为完全二叉树的结点总数),由上述公式把n2消去得:n=2n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=(n+1)/2或n0=n/2,合并成一个公式:n0=取整((n+1)/2),就可根据完全二叉树的结点总数计算出叶子结点数。本题答案:取整n/2 = 349.


贝贝笔试
1、S 市 A,B 共有两个区,人口比例为 3:5,据历史统计 A 的犯罪率为 0.01%,B 区为 0.015%,现有一起新案件发生在 S 市,那么案件发生在 A 区的可能性为:
A、37.5%
B、32.5%
C、28.6%
D、26.1%

[解析]
法一:

贝叶斯公式
假设C表示犯案属性
在A区犯案概率:P(C|A)=0.01%
在B区犯案概率:P(C|B)=0.015%
在A区概率:P(A)=3/8
在B区概率:P(B)=5/8
犯案概率:P©=(3/80.01%+5/80.015%)
贝叶斯公式:
P(A|C) = P(A,C) / P© = [P(C|A) P(A)] / P©
= [P(C|A) P(A)] / [ P(C|A) P(A)+ P(C|B) P(B) ]
= (0.01×3)/(0.01×3+0.015×5)

法二:
这道题首先得了解犯罪率是什么?犯罪率就是犯罪人数与总人口数的比。
因此可以直接得出公式:
( 3 * 0.01% ) / ( 3 * 0.01% + 5 * 0.015% ) = 28.6%
当然如果不好理解的话,我们可以实例化,比如 B 区假设 5000 人,A 区 3000 人,A 区的犯罪率为 0.01%,那么 A 区犯罪人数为 30 人,B 区的犯罪率为 0.015% ,那么 B 区的犯罪人数为 75 人 ,求发生在 A 区的可能性,就是说 A 区的犯罪人数在总犯罪人数的多少,也就是 30/(30+75)=0.2857

2、某进程在运行过程中需要等待从磁盘上读入数据,此时该进程的状态是(C)
A.从就绪变为运行
B.从运行变为就绪
C.从运行变为阻塞
D.从阻塞变为就绪
[解析] 就绪状态指的是进程已经准备好执行,等待CPU调度的状态。进程在运行过程中需要等待从磁盘上读入数据,此时该进程进入阻塞状态,而不是就绪状态。

3、关于排序算法的以下说法,错误的是______。
A、快速排序的平均时间复杂度为O(nlogn),最坏时间复杂度为O(n2)
B、堆排序的平均时间复杂度为O(nlogn),最坏时间复杂度为O(nlogn)
C、冒泡排序的平均时间复杂度为O(n2),最坏时间复杂度为O(n2)
D、归并排序的平均时间复杂度为O(nlogn),最坏时间复杂度为O(n2)

此处输入图片的描述
详细解析八大排序算法:https://blog.csdn.net/hguisu/article/details/7776068

4、 已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:(D)
  A.CFHGEBDA
  B.CDFEGHBA
  C.FGHCDEBA
  D.CFHGEDBA
  
  此处输入图片的描述

5、初始序列为:1 8 6 2 5 4 7 3 一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:()
A、8 3 2 5 1 6 4 7
B、3 2 8 5 1 4 6 7
C、3 8 2 5 1 6 7 4
D、8 2 3 5 1 4 7 6
[解析]
堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。
从最后一个非叶子结点开始(叶结点自然不用调整,第一个非叶子结点 arr.length/2-1),从左至右,从下至上进行调整。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
满二叉树和完全二叉树是两种不同的二叉树结构。满二叉树是指在一棵二叉树中,除了叶子节点外,每个节点都有两个子节点,并且所有的叶子节点都在同一层上。换句话说,满二叉树的每个节点都有两个子节点,且所有的层都被完全填满。满二叉树的特点是节点数为2的幂次方减1。 而完全二叉树是指在一棵二叉树中,除了最后一层外,其他层的节点都是满的,并且最后一层的节点都靠左排列。换句话说,完全二叉树的每个节点都有两个子节点(除了最后一层的叶子节点),最后一层的节点从左到右依次排列。完全二叉树可能会有不满的层,但是任何不满的层都必须是靠左对齐的。 满二叉树是完全二叉树的一个特例,即满二叉树一定是完全二叉树,但完全二叉树未必是满二叉树。满二叉树和完全二叉树的主要区别在于节点数的不同以及叶子节点的排列方式。 引用可以提供关于二叉树的基本知识。引用说明了满二叉树和完全二叉树之间的关系,即满二叉树是完全二叉树的特例。因此,基于这些引用内容,可以得出满二叉树和完全二叉树的定义和区别。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [二叉树(完美二叉树、完全二叉树、完满二叉树)](https://blog.csdn.net/lyl123_456/article/details/102494659)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [满二叉树和完全二叉树](https://blog.csdn.net/qq_40274514/article/details/118676571)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值