数据结构-树的简介

概要

本文介绍数据结构中的树。
在这里插入图片描述

1. 树的基本概念

1.1 树的定义

树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

具体来说,树是由根节点和若干颗子树构成的。从集合的角度来说,树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的节点,所定义的关系称为父子关系。父子关系在树的节点之间建立了一个层次结构。在这种层次结构中有一个节点具有特殊的地位,这个节点称为该树的根节点,或称为树根。

如果使用递归的方式定义如下

  1. 单个节点是一棵树,树根就是该节点本身。
  2. 设T1,T2,…,Tk是树,它们的根节点分别为n1,n2,…,nk。用一个新节点n作为n1,n2,…,nk的父亲,则得到一棵新树,节点n就是新树的根。我们称n1,n2,…,nk为一组兄弟节点,它们都是节点n的子节点。我们还称T1,T2,…,Tk为节点n的子树。
  3. 空集合也是树,称为空树。空树中没有节点。

1.2 树的特点

它具有以下的特点:

  • 每个节点有零个或多个子节点;
  • 没有父节点的节点称为根节点;
  • 每一个非根节点有且只有一个父节点;
  • 除了根节点外,每个子节点可以分为多个不相交的子树;

1.3 树中术语

术语
含义
节点树集合中的每一个元素,都称为节点。
在关系划分中,有父节点、子节点、兄弟节点、祖先节点、后代节点、根节点、叶节点(终端节点)、分支节点(非终端节点)等等
父节点若一个节点含有子节点,则这个节点称为其子节点的父节点。
子节点一个节点含有的子树的根节点称为该节点的子节点。
兄弟节点具有相同父节点的节点互称为兄弟节点。
堂兄弟节点双亲在同一层的节点互为堂兄弟
祖先节点对任意节点x,从根节点到节点x的所有节点都是x的祖先(节点x也是自己的祖先)
后代节点对任意节点x,从节点x到叶子节点的所有节点都是x的后代(节点x也是自己的后代)
根节点没有父节点的节点
叶节点没有子节点的节点
分支节点既有父节点,又有子节点的节点
-
-
节点的度一个节点含有的子树的个数称为该节点的度
节点深度对任意节点x,x节点的深度表示为根节点到x节点的路径长度。
所以根节点深度为0,第二层节点深度为1,以此类推。即节点深度是节点层次数减一。
节点的层次一棵树的根节点层次为1,其他节点的层次是其父节点层次加1
树的度一棵树中,最大的节点的度称为树的度
树的深度一棵树中节点的最大深度就是树的深度,也称为高度
森林m颗互不相交的树构成的集合就是森林

其实对于祖先和后代的定义,不同的资料有不同的解释,争论在于节点本身是否是本身的祖先或者后代

2. 树的类型

基于树的不同特性,可以设计出许多不同种类的树,下面罗列一些常见的树的类型:

类型
说明
无序树树的任意节点的子节点没有顺序关系。也叫自由树
有序树树的任意节点的子节点有顺序关系。
二叉树树的任意节点至多包含两棵子树。
满二叉树叶子节点都在同一层并且除叶子节点外的所有节点都有两个子节点。
完全二叉树对于一颗二叉树,假设其深度为d(d>1)。除第d层外的所有节点构成满二叉树,且第d层所有节点从左向右连续地紧密排列,这样的二叉树被称为完全二叉树;(不同于国外定义
平衡二叉树(AVL树)它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树,同时,平衡二叉树必定是二叉搜索树。
二叉查找树(二叉搜索树、BST)若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
任意节点的左、右子树也分别为二叉查找树;
没有键值相等的节点。
霍夫曼树带权路径最短的二叉树称为哈夫曼树或最优二叉树。
红黑树红黑树是一颗特殊的二叉查找树,除了二叉查找树的要求外,它还具有以下特性:
  每个节点或者是黑色,或者是红色。
  根节点是黑色。
  每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
  如果一个节点是红色的,则它的子节点必须是黑色的。
  从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点
B-tree(B-树或者B树)
B+树

计算机科学中的树如下图所示:百度百科-二叉树
百度百科-二叉树
在这里插入图片描述

3. 树的表示

3.1 图像表示法

3.2 符号表示法

用括号先将根节点放入一对圆括号中,然后把它的子树由左至右的顺序放入括号中,而对子树也采用同样的方法处理;同层子树与它的根节点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来。如前文树形表示法可以表示为:(1(2(5(9,10)),3(6,7),4(8)))

3.3 遍历表示法

遍历表达法有3种方法:先序遍历、中序遍历、后序遍历
例如下图:
在这里插入图片描述
其先序遍历为ABDECF
其中序遍历为DBEAFC
其后序遍历为DEBFCA

致谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值