数据结构之二叉树学习(一)

数据结构之二叉树学习(一)

参考此篇文章

1 基本概念

1.1 节点(结点)Node

结点是数据结构中的基础,是构成复杂数据结构的基本组成单位。

1.2 树结点

树结点,就是指树结构中的基本结点。

1.3 树

树(Tree)是n(n>=0)个结点组成的有限集合。
1》当n=0时,称为空树。
2》在任何一个非空树中,即,当n>=1时,有且仅有一个特定的,被称为根(Root)的结点。
3》当n>1时,其余结点可以分为m(m>0)个互不相交的有限集:T1,T2,T3,···,Tm,其中每个集合Tm本身又是一棵树,并且称为根的子树。
4》当n>0时,根结点是唯一的,不可能存在多个根结点,数据结构中的树,只能有一个根结点。
5》当m>0时,子树的个数没有限制,但它们一定是互不相交的。

1.4 结点的度

结点拥有多少个子树,就说结点有多少度。

1.5 结点的层次

从根结点开始,根结点为第一层,根结点的子结点为第二层,以此类推。

1.6 树的深度

一棵树的结点中最高的层次数,就是该树的深度。

1.7 结点间的关系

1》子结点
2》父结点
3》兄弟结点
4》叶子结点

2 二叉树

2.1 定义

二叉树,是n(n>=0)个结点的有限集合,该集合
1》或为空集,即空二叉树
2》或为由一个根结点,和两棵互不相交的的、分别称为根左子树,根的右子树组成。
3》斜树,所有结点都只有左子树的二叉树,称为左斜树;所有结点都只有右子树的二叉树,称为右斜树
4》满二叉树,在一棵二叉树中,所有分支结点都存在左右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树。
5》完全二叉树,对一个具有n个结点的二叉树A,按层编号,如果编号为i(1 <= i <= n)的结点,与同样深度的满二叉树B中的编号为i的结点位置完全相同,那么二叉树A称为完全二叉树。

2.2 特性

2.2.1 二叉树的特性

1》二叉树的每个结点,最多有两个子树,即每个结点的度不大于2;
2》左子树与右子树是有顺序的,次序不可颠倒;
3》即使某个结点只有一个子树,也要区分他是左子树还是右子树。

2.2.2 满二叉树的特性

1》叶子结点只能出现在最下层。(出现在其他层,就不能达成平衡?)
2》非叶子结点的度一定是2。
3》在同样深度的二叉树中,满二叉树的结点最多,叶子结点最多。

2.2.3 完全二叉树的特性

1》叶子结点只能出现在最下层和倒数第二层;
2》最下层的叶子结点都集中在树的左部;
3》倒数第二层若存在叶子结点,则一定是在右边连续;
4》若结点度为1,则该结点只有左子树,没有右子树;
5》同样结点数量的二叉树,完全二叉树的深度最小(满二叉树是完全二叉树的特例?二叉树有哪些?左右二叉树?完全或满二叉树?普通二叉树?);
6》满二叉树一定的完全二叉树,完全二叉树不一定是满二叉树。

3 二叉树的存储结构

3.1 顺序存储结构

二叉树的顺序存储结构,就是使用一维数组,按完全二叉树的顺序,将各节点对号入座,如有空节点,也会占用对应的数组空间。
顺序存储结构一般只适合完全二叉树,非完全二叉树会造成存储空间的浪费。

3.2 二叉链表(*)

由于顺序存储结构不能满足二叉树的需求,那么考虑链式存储。
每个节点最多有两个子节点,最多只有一个父节点。
具体实现:

4 二叉树的遍历

二叉树的遍历是指,从二叉树的根结点出发,按某种次序依次访问二叉树中的所有结点,使二叉树中的每个结点被访问一次,且只能访问一次。
其实质,就是把二叉树进行线性排列的过程。

4.1 前置遍历

根节点在1,左节点在2,右节点在3

4.2 中置遍历

左节点在1,根节点在2,右节点在3

4.3 后置遍历

左节点在1,右节点在2,根节点在3

4.4 层次遍历

从上至下,从左至右

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值