ADT复习##从满二叉树到堆

链表和数组的取舍:
尽管链表有许多方便之处(至少许多用链表做的题我愿意顶着麻烦用链表写而不是用许多数组做一些复杂的操作来做)
从某种程度上说,手写链表的繁琐带来的是算法上的莽撞,这固然不用太费脑力,但是却容易“运行超时”。
作为最初级的数据结构,我认为数组可以通过查找的O(1)的优势来出其不意解决一类问题。
那么运用数组巧妙解决问题的情况,我认为有以下几个先决条件:
1、内存卡得不紧,以存放我们用于储存各种各样得对应关系得信息得数组
2、有充分得限制使得每个元素有比较明显得特征,从而能对应到一个数组上去,并且易于查找
3、不容易被绕晕的头脑

回顾高中数学竞赛的知识,我们知道一个数可以被k进制表示,当然每一位的系数的可能性比较多,我们不希望看到这样。
而二进制就只有0,1两种系数,写出来挺有美感的,更重要的是,给出从2^0,2 ^1,……2 ^k这k+1个数,他们可以表达出任何小于2 ^(k+1)-1的数.
我们确实可以考虑从正整数到二进制序列的一个映射,很幸运的是,我们有二叉树这个结构,并且在每一层都是满的情况下,我们就得到了一组2^0,2 ^1,……2 ^k这样的单元。
所以我们理所当然得希望有一个满的二叉树。
我们可以通过二进制的性质确定非常多的信息。
(1)首先是第几行第几个位置
(2)由1我们可以知道该节点的上一个节点第几层第几个位置
(3)我们比较烦的奇偶分类问题也挺好解决的:前k个满的层的节点数之和为奇数;当前层的节点数之和为偶数。
(4)左右边是不是该节点的兄弟。
这个是满的二叉树,我们试着放宽这个要求
事实证明,再新的一层添加节点的时候,只要遵循从右到左或者从左到右的规律,似乎也能通过一个十进制数索引到对应的节点。
但是如果随意添加那就哈哈哈哈
在满足每层填充方向的情况下,我们可以知道,如果倒数第二层没有填满,那么我们还是得不出什么规律,所以我们希望一个树,它由一个满的二叉树和最后一层组成(可能没有排满)
为了简练又便于利用树的深度,我们改这个性质为树的叶节点只存在于最后两层
啊这就是我们的完全树!

我们建立了二进制的二叉树到十进制数进而到用其作为索引的数组的映射关系,但是有什么用呢?就为了表示一个树?哦当然不是,我的朋友。年轻人要讲武德,有了神奇的操作就要有合适的运用。
我们的二叉树是不是经常拿来做查找用?那我们从二叉查找树入手,自然就可以想到用这个映射出来的数组模拟出二叉查找树的效果,实现用数组带来的降低复杂度的效果哈哈哈哈

于是就有了堆
堆栈堆栈,除了两者都用链表表示易于理解但我们学习的时候一般用数组表示之外好像区别挺大的,至少我不会拿堆来处理后缀表达式。
说起来简单,但写起代码来却挺难的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值