《计算思维与算法入门》 —2.7.2 二叉树

举报
华章计算机 发表于 2019/12/10 14:53:02 2019/12/10
【摘要】 本节书摘来自华章计算机《计算思维与算法入门》一书中第2章,第2.7.2节,作者是赵军 等。

2.7.2  二叉树

一般树结构在计算机内存中的存储方式以链表(Linked List)为主。对于n叉树来说,每个节点的度数都不相同,当n=2时,它的链接浪费率最低。为了避免树结构空间浪费的缺点,所以我们最常使用二叉树(Binary Tree)结构来取代其他的树结构。

二叉树(又称为Knuth树)是一个由有限节点所组成的集合,此集合可以为空集合,或由一个树根及其左右两棵子树组成。简单地说,二叉树最多只能有两个子节点,就是度数小于或等于2。二叉树每个节点在计算机中的数据结构如图2-54所示。

 image.png

图2-54  二叉树节点在计算机中的数据结构示意图

二叉树和一般树的不同之处整理如下:

(1)树不可为空集合,而二叉树可以。

(2)树的度数为d≥0,而二叉树的节点度数为0≤d≤2。

(3)树的子树间没有次序关系,而二叉树有。

下面我们来看一棵实际的二叉树,如图2-55所示。

 image.png

图2-55  二叉树

图2-55是以A为根节点的二叉树,包含以B、D为根节点的两棵互斥的左子树和右子树,如图2-56所示。

 image.png

图2-56  两棵互斥的左子树和右子树

以上这两棵左右子树属于同一种树结构,不过却是两棵不同的二叉树,原因是二叉树必须考虑前后次序关系。这点大家要特别注意。

由于二叉树应用得相当广泛,因此衍生了许多特殊的二叉树结构。我们分别介绍如下:

1.满二叉树(Fully Binary Tree)

如果二叉树的高度为h(h≥0),树的节点数为2h1,我们就称此树为“满二叉树”,如图2-57所示:

 image.png

图2-57  满二叉树

2.完全二叉树(Complete Binary Tree)

完全二叉树的高度为h,所含的节点数小于2h1,但其节点的编号方式如同高度为h的满二叉树一样,从左到右、从上到下的顺序一一对应,如图2-58所示。

 image.png

图2-58  完全二叉树和非完全二叉树

3.斜二叉树(Skewed Binary Tree)

当一个二叉树完全没有右节点或左节点时,我们就把它称为左斜二叉树或右斜二叉树,如图2-59所示。

 image.png

图2-59  左斜二叉树和右斜二叉树

4.严格二叉树(Strictly Binary Tree)

二叉树中的每一个非终端节点均有非空的左右子树,如图2-60所示。

 image.png

图2-60  严格二叉树


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。