数据结构笔记

平衡二叉树(ALV树)

基本概念

  • 平衡二叉树或者是空的二叉排序树,或者是满足下列性质的二叉排序树:

    • 左子树和右子树的高度之差的绝对值小于等于1;
    • 左子树和右子树也是平衡树。
  • 节点的平衡因子 : 二叉树上节点左子树的深度减去该节点右子树的深度所得到的的值。

  • 最小不平衡子树: 离插入点最近的,且平衡因子的绝对值大于1的节点为根的子树。

平衡二叉树的构造方法

LL型

在这里插入图片描述
调整方法:

用不平衡节点(1)的左孩子(2)代替其位置,原来的根(1)连同其右子树称为(2)的右子树,如果原来的左子树(2)有右子树,因为根节点成为其右子树,所以把(2)的右子树放到(1)的左子树的位置上。

RR型

在这里插入图片描述
调整方法:

用不平衡节点(1)的右孩子(2)代替其位置,原来的根(1)连同其左子树称为(2)的左子树,如果原来的右子树(2)有左子树,因为根节点成为其左子树,所以把(2)的左子树放到(1)的右子树的位置上。

LR型

在这里插入图片描述
调整方法:

先把下边(1)(2)节点进行调整,(1)(2)为RR型,所以用RR型的方法调整后,之后再用LL型的方法即可。

RL型

在这里插入图片描述
调整方法:

先把下边(1)(2)节点进行调整,(1)(2)为LL型,所以用LL型的方法调整后,之后再用RR型的方法即可。

折半查找在成功和失败下的平均查找长度

判定树如下:
在这里插入图片描述

查找成功时

A S L = ∑ 节 点 的 层 数 ∗ 该 层 节 点 的 个 数 n n 为 节 点 总 个 数 ASL = \frac{\sum {节点的层数 * 该层节点的个数}}{n} \quad n为节点总个数 ASL=nn
在这里插入图片描述
查找失败时

A S L = ∑ 度 不 为 2 的 节 点 的 空 的 左 , 右 孩 子 节 点 数 ∗ 其 父 节 点 所 在 层 数 n n 为 度 不 为 2 的 节 点 的 空 的 左 , 右 孩 子 节 点 总 个 数 ASL = \frac{\sum {度不为2 的节点的空的左,右孩子节点数 * 其父节点所在层数}}{n} \quad n为度不为2 的节点的空的左,右孩子节点总个数 ASL=n2n2
在这里插入图片描述

AOE网中求关键路径

在这里插入图片描述

各顶点最早发生的时间

解决方法:

由一个顶点的前驱节点的最早发生时间分别加上 前驱节点到该节点的边权,其值得最大值就是该节点的最早发生时间。(就是说源点为0,之后对于后续的节点,找他的入度对应的点加上边权 (取最大值,可能有多个入度))

  • 第一个节点前驱节点为空,设置为0

  • 最大值意思是,如上图的V5有V3和V2都指向他,所以他的最早时间是e(V3) + 1 与 e(v2) + 1 这两个值中的最大值。

  • 从第一个节点开始推导。

各顶点最晚发生的时间

解决的算法:

由它的每一个后继节点的最晚发生时间减去 其指向后继节点的 边权 ,其最小值 就为该节点的最晚发生时间。(就是汇点的值设置为其最早开始的,向前堆,对于每一个节点,找他的出边,出边连的节点的最晚时间加上边权(取最小值,可能有多条) .

边的最早发生时间和最晚发生时间

一条边有起始点i , 终止点j ,表示为<i,j>

  1. 边的最早发生时间: 为 <i,j> 中i 顶点对应的最早发生时间。
  2. 边的最晚发生时间:为 <i,j> 中j 顶点对应的最晚发生时间 减去 边权。

关键路径

将边的最早发生时间和最晚发生时间相等的边连起来。就得到关键路径。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落春只在无意间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值