二叉树

这里写自定义目录标题


.树的概念
(1) 非线性的数据结构,由n个结点组成一个层次的关系,树的结构根部向上,叶子向下,像一颗倒挂着的树。

根结点为根结点,没有前驱结点。
树是由递归定义的。
(2)树的判断,
子树互不相交。
除了根结点外,每个结点只有一个父节点

结点的度:一个结点含有字数或叶子的个数。
叶节点或终端节点:度为0的结点。
树的度:树上某个拥有最多结点的个数,称为树的。
树的高度:树中结点的最大层次。
森林:由多个树组成的集合。

1.2树的表示
左孩子右兄弟
数据结构
typedef struct tree
{
size_t val;//数据
Tree* leftchild;
Tree* rightbro;
}
可以通过左孩子右兄弟,从根结点开始,可以找到第一个孩子,可以通过这个孩子,找到他的兄弟结点,可以形成一颗树

树在实际中的应用:目录

二叉树:
2.1概念:一个结点有俩个子节点,或一个根结点上连接俩个左子树和右子树、
二叉树的特点:1.每个结点最多有俩个子树,二叉树不存在度大于二的结点
2.二叉树左右不能颠倒。

特殊的二叉树:
满二叉树:一个二叉树,每一个结点的子树都为2(除了叶子结点),且叶子结点为满
完全二叉树:每一个子树的结点为2,叶子结点可以不为满,但是必须保证连续。

二叉树的存储结构:链式结构和顺序结构。

二叉树的性质:
1.若根结点的层数为零,则一颗二叉树第I层最多有2^i个结点
2.如果二叉树的深度为h(根结点规定为0),深度为h的二叉树最大结点数为2^(h=1)-1g个。
3。任意二叉树,叶节点个数为n0,度为2非叶结点个数为n2,,则n0 = n2+1.

顺序结构:
现实中我们通常把堆使用顺序结构的数组来存储,该堆为数据结构,而非操作系统中的堆区域

堆的定义:
一个关键码的集合,所有元素均按照完全二叉树使用顺序结构排布,根结点大的称为大根堆,根结点小的称为小根堆。

堆的性质:(逻辑结构为二叉树,物理结构为数组)
一颗完全二叉树
大堆:该节点必须小于父节点,大于子节点
小堆:该节点必须大于父节点,小于子节点

堆的实现:
1.堆向下调整算法
给出一个数组,逻辑上看作一个完全二叉树,子树均为堆。
//建小堆
void AdjustDown(int* a, size_t n, int root)//root为序列号
{
int parent = root;
int child = parent *2+1;
if(a[child] > a[child+1])
{
++child;
}
if(a[parent] > a[child])
{
int tmp = a[parent];
a[parent] = a[child];
tmp = a[child];

parent = child;
child = parent * 2+1;
}
else()
break;
}

堆的建立
从最后一个结点开始,依次向上调整,由于调整的时候可能会使子树的顺序颠倒,所以每一次调整都要递归进行一次排序
代码实现
for(int root = n-1-1/2, root >= 0, root --)
{
AdjustDown(a,n,root);
}

二叉树的链式结构存储
链式结构是沿着某条探索路线对二叉树的结点进行访问
1.前序遍历:先访问根节点,再访问左右子树;
2.中序遍历:先访问左子树,再访问根节点,最后访问右子树;
3.后序遍历:先访问左右子树,再访问根节点;
4.层序遍历:按照层序访问;
1 2 3 一般用递归实现

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值