【3月第三周学习记录】数据结构与算法王卓-第五章树和二叉树-基本定义和术语篇

目录

0. 前言

数据的逻辑结构

1. 树的定义与一些基本术语

树的几种表示方式

树的基本术语

2. 二叉树的概念与特点

定义与特点

二叉树与树是两个概念

二叉树的五种形态

二叉树的ADT定义 

满二叉树的定义与特点

完全二叉树的定义与特点

3. 树的应用案例

利用哈夫曼树高效率编码

利用二叉树求数学表达式的值 


0. 前言

数据的逻辑结构

之前的学习一直是围绕着线性结构,它的逻辑结构是一对一的:任意元素的前驱与后继都只有一个。而从现在开始就迈入了非线性结构的学习。

1. 树的定义与一些基本术语

树是一种经典的递归结构。

树的几种表示方式

以中间的表示方式最经典也最直观。

树的基本术语

树的深度/高度:4。

结点的直接前驱称为parents, 所有前驱称为祖先ancestors; 直接后继称为child, 所有后继称为deancestors

结点的度:A=3,B=2,树的度=最高度的结点=A的度=D的度=3

根节点也是分支结点,非终端结点;除了根节点以外的分支结点(有child)都叫内部节点,没有child的叫终端结点

有序树与无序树

当改变子树的顺序时,仍然看作是同一颗树,则称为无序树。

树与森林

树一定是森林,一棵树也可以是森林。

但森林不一定是树,需要加一个公共parent结点就成了树

2. 二叉树的概念与特点

定义与特点

二叉树可以有0个结点,此时它就是空集。二叉树的子树也可以是空集,但有顺序之分。 

二叉树与树是两个概念

注意:二叉树与树是两种不同的定义,不能看成是特殊情况下的树。

例:同样是A,B组成的二叉树和树不相同。

例:同结点数量的二叉树与树,拥有不同形态数量

二叉树的五种形态

二叉树的ADT定义 

基本操作众多,这里只举部分例子

第一个创建二叉树CreateBiTree中definition为二叉树的建立形式,而这其实可以通过二叉树的遍历方式。

满二叉树的定义与特点

满二叉树在同深度的二叉树中有最多的结点和叶子。

 

思考:你能想出几种方式判断下图不是满二叉树?请使用编程思想

1. 从满二叉树的定义入手。满二叉树的结点数量为2^{k}-1,k=4代入得15,而图中只有9个结点,故不是二叉树。(可以作为编程中判断二叉树是否满的条件)

2. 从每层都满的性质入手。最后一层结点数<2^{k-1}(二叉树的性质1)不满,所以不是二叉树。

3. 从叶子全部在最底层的性质入手。遍历所有n0,发现它们深度(k=3与k=4)不同,故非二叉树。

完全二叉树的定义与特点

定义

对比同深度的满二叉树,结点的顺序能与之保持一致的树称为完全二叉树

一些例子

特点

1. 叶子只可能在最底层或倒数第二层

2. 任意结点的左右子树深度最多差1

 

思考:满二叉树和完全二叉树的关系?

答:满二叉树一定是完全二叉树,完全二叉树却不一定是满二叉树。 

3. 树的应用案例

利用哈夫曼树高效率编码

可以获取不等长(节约空间)的前缀码(准确无歧义,如收到0不会认为是a或b的第一位)

利用二叉树求数学表达式的值 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值