树和二叉树概念入门

树的起源

树结构是一类重要的非线性数据结构
直观来看,树是以分支关系定义的层次结构。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树来形象表示。树在计算机领域中也得到广泛应用,尤以二叉树最为常用。

树的应用

如在操作系统中,用树来表示文件目录的组织结构,
在编译系统中,用树来表示源程序的语法结构,
在数据库系统中,树结构也是信息的重要组织形式之一。

本章重点讨论二叉树的存储结构及其各种操作,并研究树和森林与二叉树的转换关系,最后介绍树的应用。

树的定义

树(Tree)是n(n≥0)个结点的有限集,它或为空树(n=0);或为非空树,对于非空树T:
(1)有且仅有一个称之为根的结点;
(2)除根结点以外的其余结点可分为m(m>0)个互不相交的有限集T1, T2, …, Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。

例如,在图5.1中,(a)是只有一个根结点的树;(b)是有13个结点的树,其中A是根,其余结点分成3个互不相交的子集:

T1={B, E, F, K, L},
T2={C, G},
T3={D, H, I, J, M}

T1、T2和T3都是根A的子树,且本身也是一棵树。
例如T1,其根为B,其余结点分为两个互不相交的子集:

T11={E, K, L},
T12={F}

T11和T12都是B的子树。而T11中E是根,{K}和{L}是E的两棵互不相交的子树,其本身又是只有一个根结点的树。
在这里插入图片描述
树的结构定义是一个递归的定义,即在树的定义中又用到树的定义,它道出了树的固有特性。

树还可有其他的表示形式,如图5.2所示为图5.1(b)中树的各种表示。
其中(a)是以嵌套集合(即是一些集合的集体,对于其中任何两个集合,或者不相交,或者一个包含另一个)的形式表示的;
(b)是以广义表的形式表示的,根作为由子树森林组成的表的名字写在表的左边;
(c)用的是凹入表示法(类似书的编目)。表示方法的多样化,正说明了树结构在日常生活中及计算机程序设计中的重要性。

一般来说,分等级的分类方案都可用层次结构来表示,也就是说,都可由一个树结构来表示。
在这里插入图片描述

树的基本术语

(1)结点:
树中的一个独立单元。包含一个数据元素及若干指向其子树的分支,如图5.1(b)中的A、B、C、D等。(下面术语中均以图5.1(b)为例来说明)
(2)结点的度:
结点拥有的子树数称为结点的度。例如,A的度为3,C的度为1,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)棵互不相交的树的集合。对树中每个结点而言,其子树的集合即为森林。由此,也可以用森林和树相互递归的定义来描述树。就逻辑结构而言,任何一棵树都是一个二元组Tree=(root ,F),其中root是数据元素,称作树的根结点;F是m(m≥0)棵树的森林,F=(T1, T2, …, Tm),其中Ti=(ri, Fi)称作根root的第i棵子树;当m≠0时,在树根和其子树森林之间存在下列关系:

RF={<root,ri>|i=1,2,,m,m>0

二叉树的定义

二叉树的定义二叉树(Binary Tree)是n(n≥0)个结点所构成的集合,它或为空树(n=0);

或为非空树,对于非空树T:

1)有且仅有一个称之为根的结点;
(2)除根结点以外的其余结点分为两个互不相交的子集T1和T2,
分别称为T的左子树和右子树,且T1和T2本身又都是二叉树。

二叉树与树一样具有递归性质,二叉树与树的区别主要有以下两点:

(1)二叉树每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点);
(2)二叉树的子树有左右之分,其次序不能任意颠倒。二叉树的递归定义表明二叉树或为空,或是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。由于这两棵子树也是二叉树,则由二叉树的定义,它们也可以是空树。

由此,二叉树可以有5种基本形态,如图5.3所示。
在这里插入图片描述

图5.3 二叉树的5种基本形态5.上一小节中引入的有关树的术语是都适用于二叉树。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值