数据结构与算法——22. 树的概念及其相关术语

一、树(tree)的概念

树是一种基本的“非线性”数据结构,在计算机科学的各个领域中被广泛应用(操作系统、图形学、数据库系统、计算机网络)。

跟自然界中的树一样,数据结构树也分为:根、枝和叶等三个部分。一般数据结构的图示把根放在上方,叶放在下方

1. 树的例子:生物学的物种分类

在这里插入图片描述

  • 分类树的第一个特征:分类体系是层次化的,树是一种分层结构,越接近顶部的层越普遍,越接近底部的层越独特:界、门、纲、目、科、属、种。

  • 分类树的第二个特征:一个节点的子节点与另一个节点的子节点,相互之间是隔离独立的。猫属Felis和蝇属Musca下面都有Domestica的同名节点,但相互之间并无任何关联,可以修改其中一个Domestica而不影响另一个。

  • 分类树的第三个特征:每一个叶节点都具有唯一性。可以用从根开始到达每个种的完全路径来唯一标识每个物种。如:Animalia->Chordate->Mammal->Carnivora->Felidae->Felis->Domestica。

2. 树的例子:Unix文件系统

在这里插入图片描述

3. 树的例子:HTML文档(DOM树)

在这里插入图片描述

二、树结构的相关术语

下面这些术语,会在后面树的学习中用到。

  • 节点Node:组成树的基本部分。

    每个节点具有名称,或“键值”,节点还可以保存额外数据项,数据项根据不同的应用而不同。

  • 边Edge:组成树的另一个基本部分。

    每条边恰好连接两个节点,表示节点之间具有关联,边具有出入方向;每个节点(除根节点)恰有一条来自另一节点的入边;每个节点可以有多条连到其它节点的出边。

  • 根Root:树中唯一一个没有入边的节点。

  • 路径Path:由边依次连接在一起的节点的有序列表。

    如上面DOM树中的:html->body->ul->li。

  • 子节点Children:入边均来自于同一个节点的若干节点,称为这个节点的子节点。

    如上面DOM树中,body下的ul、h1、h2,都是body的子节点。

  • 父节点Parent:一个节点是其所有出边所连接节点的父节点。

    如上面DOM树中,body和它下面的ul、h1、h2,其中body是后三者的父节点。

  • 兄弟节点Sibling:具有同一个父节点的节点之间称为兄弟节点。

    如上面DOM树中,body下的ul、h1、h2,三者互为兄弟节点。

  • 子树Subtree:一个节点和其所有子孙节点,以及相关边的集合。

    如上面DOM树中,body下的所有节点和边(不包括html与body之间的),构成了一棵新的树,称为整个DOM树的子树。

  • 叶节点Leaf:没有子节点的节点称为叶节点。

    如上面DOM树中,meta、title、两个li、h1以及a,都是叶节点。

  • 层级Level:从根节点开始到达一个节点的路径,所包含的边的数量,称为这个节点的层级。

    如上面DOM树中,body为1级,h2为3级,a为3级。

  • 高度:树的所有节点中,最大的层级称为树的高度。

    如上面DOM树中,a和两个li的层级最大,都为3,所以DOM树的高度为3。

1. 树的定义1

树由若干节点,以及两两连接节点的边组成,并有如下性质:

  • 其中一个节点被设定为根;
  • 每个节点n(除根节点),都恰好连接一条来自节点p的边,p是n的父节点;
  • 每个节点从根开始的路径是唯一的;
  • 如果每个节点最多有两个子节点,这样的树称为“二叉树”,这是一种典型的树结构。

2. 树的定义2(递归版本)

树是:

  • 空集;
  • 或者由根节点及0个或多个子树构成(其中子树也是树),每个子树通过边,直接或间接与根节点相连。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花_城

你的鼓励就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值