《数据结构(C++)版》之第5章 树和二叉树

《数据结构(C++)版》之第5章 树和二叉树
一、树
树是n(n>=0)个结点的有限结合。当n=0时,称为空树;任意一棵非空树满足一下条件:有且仅有一个特定的称为根的结点:但n>1时,除根结点之外的其余结点被分成m(m>0)个互不相交的有限集合,其中每个集合又是一棵树,并称为这个根结点的子树。树的定义是递归的。
在树中,将数据元素称为结点。
(一)树的遍历操作
若树的为空,则空操作返回,否则
1、前序遍历:
访问根结点->按照从左到右的顺序前序遍历根结点的每一棵子树。
2、后序遍历
按照从左到右的顺序后序遍历根结点的每一棵子树->访问根结点;
3、层序遍历
从树的第一层(即根结点)开始,自上而下逐层遍历,在同一层中,按从左到右的顺序对结点逐个访问。
(二)树的存储结构
双亲表示法、孩子表示法、双亲孩子表示法、孩子兄弟表示法
二、二叉树
二叉树是一种最简单的树结构,特别是适合计算机处理,而且任何树都可以简单地转换为二叉树。本章的重点。
二叉树是n(n>=0)个结点的有限集合,该计划或者为空集(称为空二叉树),或者有一个根结点和两个互不相交的、分别称为根结点的左子树和右子树的二叉树组成。
这里要注意:二叉树和树是两种树结构。
几种特殊的二叉树:
斜树、满二叉树、完全二叉树
还有比较重要的是二叉树的五大基本性质!
(一)二叉树的遍历操作
若二叉树为空,则空操作返回;否则:
1、前序遍历
访问根结点->前序遍历根结点的左子树->前序遍历根结点的右子树
2、中序遍历
中序遍历根结点的左子树->访问根结点->中序遍历根结点的右子树
3、后序遍历
后序遍历根结点的左子树->后序遍历根结点的右子树->访问根结点
4、层序遍历
从树的第一层(即根结点)开始,自上而下逐层遍历,在同一层中,按从左到右的顺序对结点逐个访问。
(二)二叉树的储存结构
顺序存储结构、二叉链表、三叉链表和线索链表
二叉链表在本章,主要介绍了:前序遍历、中序遍历、后序遍历、层序遍历、构造函数、析构函数
(三)二叉树遍历的非递归算法和递归算法
(四)树、森林与二叉树之间的转换
1、树->二叉树
加线:树中所有相邻兄弟结点之间加一条连线;
去线:对树中的每个结点,只保留他与第一个孩子结点之间的连线,删去他与其他孩子结点之间的连线;
层次调整:一根结点为轴心,将树顺时针转动一定的角度,使之层次分明。
2、森林->二叉树
将森林中的没课树转成二叉树;从二叉树开始,一次把后一棵二叉树的根结点作为前一棵二叉树结点的右孩子,当所有二叉树连起来后,此时所得到的二叉树就是偶森林转换得到的二叉树。
五)应用举例——哈夫曼树及哈夫曼编码
三、本章思维导图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值