数据结构之树与二叉树--王道

本文详细介绍了树的基本概念,包括树的定义、基本术语和性质,并深入探讨了二叉树的定义、特殊类型、性质以及存储结构。此外,还阐述了二叉树的遍历方法,如先序、中序、后序遍历,并提到了线索二叉树。文章最后提及了树与二叉树的应用,特别是哈夫曼树及其编码的构建过程。

目录

5.1树的基本概念

5.1.1树的定义

5.1.2 基本术语 

5.1.3树的性质

5.2二叉树的概念

5.2.1二叉树的定义及其主要特性

1.二叉树的定义

2.几个特珠的二叉树

1)满二又树。

 2)完全二叉树

 3)二叉排序树

4)平衡二叉树

3.二叉树的性质

 5.2.2二叉树的存储结构

1.顺序存储结构

 2.链式存储结构

5.3二叉树的遍历和线索二叉树

5.3.1二叉树的遍历

1.先序遍历

 2.中序遍历

 3.后序遍历

 4.递归

5.层次遍历

 6.由遍历序列构造二叉树

     5.3.2线索二叉树

 1.线索二叉树的基本棍念

 2.中序线索二叉树的构造

 3.中序线索二叉树的遍历.....

4.先序线索二叉树和后序线索二叉树....

 5.4树、森林

5.4.1树的存储结构

1.双亲表示法

2,孩子表示法

3.孩子兄弟表示法

5.4.2树、森林与二叉树的转换

5.4.3树和森林的遍历

 5.5树与二叉树的应用

5.5.1哈夫曼树和哈夫曼编码

 1.哈夫曼树的定义

 2.哈夫曼树的构造

 3.哈夫曼编码


 

5.1树的基本概念

5.1.1树的定义

树是n (n>_0)个结点的有限集。当n=0时,称为空树。在任意一棵非空树中应满足:
(1)有且仅有一个特定的称为根的结点。

     显然,树的定义是递归的,即在树的定义中又用到了其自身,树是一种递归的数据结构。树
作为一种逻辑结构,同时也是一种分层结构
,具有以下两个特点:
    1)树的根结点没有前驱,除根结点外的所有结点有且只有一个前驱。
    2)树中所有结点可以有零个或多个后继。

    树适合于表示具有层次结构的数据。树中的某个结点(除根结点外)最多只和上一层的一个
结点(即其父结点)有直接关系,根结点没有直接上层结点,因此在n个结点的树中有n-1条边。
而树中每个结点与其下一层的零个或多个结点(即其子女结点)有直接关系。

5.1.2 基本术语 

(l) 结点:树中的一个独立单元。包含一个数据元素及若于指向其子树的分支,如图 5.1 (b) 中的 A 、 B 、 C 、 D 等。(下面术语中均以图 5.1 (b) 为例来说明)

(2)结点的度:结点拥有的子树数称为结点的度。例如,A的度为 3, C的度为l, F的度 为0。

(3)树的度:树的度是树内各结点度的最大值。图 5.1 (b) 所示的树的度为3。

(4) 叶子 度为 0 的结点称为叶子或终端结点。结点 K 、 L 、 F 、 G 、 M 、 I 、 J都是树的 叶子。

(5) 非终端结点:度不为 0 的结点称为非终端结点或分支结点。除根结点之外,非终端结点 也称为内部结点。

(6)双亲和孩子:结点的子树的根称为该结点的孩子,相应地,该结点称为孩子的双亲。例 如,B的双亲为A, B的孩子有E和F。

(7) 兄弟:同一个双亲的孩子之间互称兄弟。例如,H 、 I 和J互为兄弟。

(8) 祖先:从根到该结点所经分支上的所有结点。例如, M 的祖先为 A 、 D 和H。

(9) 子孙:以某结点为根的子树中的任一结点都称为该结点的子孙。如 B 的子孙为E 、 K 、 L 和F。

(10) 层次:结点的层次从根开始定义起,根为 第一层,根的孩子为第二层。树中任一结点的 层次等千其双亲结点的层次加 1。

(11)堂兄弟:双亲在同 一层的结点互为堂兄弟。例如,结点 G 与E 、 F、 H 、 I 、 J互为 堂兄弟。
(12)树的深度:树中结点的最大层次称为树的深度或高度。图5.1 (b)所示的树的深度 为4。

(13)有序树和无序树:如果将树中结点的各子树看成从左至右是有次序的(即不能互换), 则称该树为有序树,否则称为无序树。在有序树中最左边的子树的根称为第一个孩子,最右边的 称为最后一个孩子。

(14)森林:是m (m=>0)棵互不相交的树的集合。对树中每个结点而言,其子树的集合即 为森林。由此,也可以用森林和树相互递归的定义来描述树。

(15)路径和路径长度:树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的,而路径长度是路径上所经过的边的个数。
注意:由于树中的分支是有向的,即从双亲指向孩子,所以树中的路径是从上向下的,同一双亲的两个孩子之间不存在路径.


5.1.3树的性质

5.2二叉树的概念

5.2.1二叉树的定义及其主要特性

   1.二叉树的定义

    二叉树是另一种树形结构,其特点是每个结点至多只有两棵子树(即二叉树中不存在度大于
2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒。
    与树相似,二叉树也以递归的形式定义。二叉树是n (n>=0)个结点的有限集合:
    ①或者为空二叉树,即n = 0
    ②或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成。左子树和右子树
        又分别是一棵二叉树。

    二叉树是有序树,若将其左、右子树颠倒,则成为另一棵不同的二叉树。即使树中结点只有
一棵子树,也要区分它是左子树还是右子树。二叉树的5种基本形态如图5.2所示。

 二叉树与度为2的有序树的区别:
①度为2的树至少有3个结点,而二叉树可以为空。
②度为2的有序树的孩子的左右次序是相对于另一孩子而言的,若某个结点只有一个孩子,
  则这个孩子就无须区分其左右次序,而二叉树无论其孩子数是否为2,均需确定其左右次
  序,即二叉树的结点次序不是相对于另一结点而言,而是确定的。

2.几个特珠的二叉树

1)满二又树。

 2)完全二叉树

 3)二叉排序树

        左子树上所有结点的关键字均小于根结点的关键字;

        右子树上的所有结点的关键字均大于根结点的关键字;

左子树和右子树又各是一棵二叉排序树。


4)平衡二叉树

树上任一结点的左子树和右子树的深度之差不超过1

3.二叉树的性质

 5.2.2二叉树的存储结构

1.顺序存储结构

        二叉树的顺序存储是指用一组地址连续的存储单元依次自上而下、自左至右存储完全二叉树
上的结点元素,即将完全二叉树上编号为i的结点元素存储在一维数组下标为i-1的分量中。

 二叉树的顺序存储结构如图所示,其中0表示并不存在的空结点。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值