数据结构【第五章知识小结】

文章目录


前言

提示:第五章知识小结:

1、树和二叉树的定义

结点:即树的数据元素

结点的度:结点挂接的子树数

结点的层次:从根到该结点的层数(根结点算第一层)

终端结点:即度为0的结点,即叶子

分支结点:即度不为0的结点(也称为内部结点)

树的度:所有结点度中的最大值

树的深度:指所有结点中最大的层数,也称树的高度

  1. 二叉树的性质

性质1: 在二叉树的第i层上至多有2i-1个结点

性质2: 深度为k的二叉树至多有2k-1个结点

性质3: 对于任何一棵二叉树,若度为2的结点数有n2个,则叶子数n0必定为n2+1 (即n0=n2+1)

性质4: 具有n个结点的完全二叉树的深度必为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IJ8nLdSK-1652529375276)(media/68d218db515ea1827d77a6925ef343ae.png)]

性质5: 对完全二叉树,若从上至下、从左至右编号,则编号为i 的结点,其左孩子编号必为2i,其右孩子编号必为2i+1;其双亲的编号必为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DgBBzBJq-1652529375277)(media/8458845ab29ecbe0fc8eae3dd487618d.png)]。

3、特殊形态的二叉树

满二叉树:一棵深度为k 且有2k -1个结点的二叉树。(特点:每层都“充满”了结点)

完全二叉树:深度为k 的,有n(n< 2k -1 )个结点的二叉树,当且仅当其每一个结点都与深度为k 的满二叉树中编号从1至n的结点一一对应。

只有最后一层叶子不满,且最后一层叶子全部集中在左边

  1. 二叉树的顺序存储

存储方法:按满二叉树的结点层次编号,依次存放二叉树中的数据元素。

优点:结点间关系蕴含在其存储位置中

缺点:浪费空间,仅适于存满二叉树和完全二叉树

  1. 遍历二叉树

先序遍历:DLR,即先根再左再右

中序遍历:LDR,即先左再根再右

后序遍历:LRD,即先左再右再根

结论:

1.若二叉树中各结点的值均不相同,则:

(1)由二叉树的前序序列和中序序列,或由其后序序列和中序序列均能唯一地确定一棵二叉树,

(2)但由前序序列和后序序列却不一定能唯一地确定一棵二叉树。

2.时间效率:O(n) //每个结点只访问一次

3.空间效率:O(n) //栈占用的最大辅助空间

5、线索二叉树

在n个结点的二叉链表中,有n+1个空指针域

1)若结点有左子树,则lchild指向其左孩子;

否则, lchild指向其直接前驱(即线索);

2)若结点有右子树,则rchild指向其右孩子;

否则, rchild指向其直接后继(即线索)。

为了避免混淆,增加两个标志域

lchildLTagdataRTagrchild

若LTag=0, lchild指向左孩子;若 LTag=1, lchild指向其前驱。

若RTag=0, rchild指向右孩子;若 RTag=1, rchild指向其后继。

6、树的存储结构

1.双亲表示法

用一组连续的存储单元存储树的结点。

每个结点包含一个数据域和一个指向双亲结点位置的指针域。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HO4VHCs0-1652529375278)(media/6590dca4b287088e3460455cfe089e58.png)]

2.孩子表示法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-biFs74Bp-1652529375279)(media/ae0e0b68a74b31b727adc9ff3a2ac5f6.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SnkEDxqr-1652529375279)(media/3ff93464a32fc86029ca75816df4e6a1.png)]

3.孩子双亲表示法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GTFkKJts-1652529375280)(media/ae0e0b68a74b31b727adc9ff3a2ac5f6.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fo5zJJe0-1652529375280)(media/ee5f7cb4d59642516b1fcc8dd6c2b95b.jpeg)]

4.孩子兄弟表示法

firstchildDatanextsibling

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KMtzUZrG-1652529375280)(media/ae0e0b68a74b31b727adc9ff3a2ac5f6.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kRu8tEwc-1652529375281)(media/b5f1e9ea882aedd31f0cb261980de717.png)]

此处举个栗子

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DvzuXT43-1652529375281)(media/4b095d12eb8fec400ac7660bc2f9dfe9.png)]

7、哈夫曼树及其应用

路径:由一结点到另一结点间的分支所构成。

路径长度:路径上的分支数目,a→e的路径长度=2

带权路径长度:结点到根的路径长度与结点上权的乘积。

树的带权路径长度:树中所有叶子结点的带权路径长度之和。

哈夫曼树:带权路径长度最小的树

哈夫曼编码的译码过程:

分解接收字符串:遇“0”向左,遇“1”向右;一旦到达叶子结点,则译出一个字符,反复由根出发,直到译码完成。

特点:每一码都不是另一码的前缀,绝不会错译! 称为前缀码

哈夫曼编码的总结:

1.哈夫曼编码是不等长编码。

2.哈夫曼编码是前缀编码,即任一字符的编码都不是另一字符编码的前缀。

3.哈夫曼编码树中没有度为1的结点。若叶子结点的个数为n,则哈夫曼编码树的结点总数为 2n-1。

4.发送过程:根据由哈夫曼树得到的编码表送出字符数据。

5.接收过程:按左0、右1的规定,从根结点走到一个叶结点,完成一个字符的译码。反复此过程,直到接收数据结束。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MIKE笔记(同名B站)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值