一般树、无根树、有根树、无序树、有序树的深入辨析


我们总说水是源的,树是有根的。但是,数据结构中的树是可以没有根的。本文旨在搞清树的最基本形式的区别,即一般树、有根树、无根树、有序树、无序树的区别。

一、树的本质特征

树的本质特征就一句话:树是一种无环的连通无向图。
只要满足这个条件,它就是树。
具体来说有3个条件:

  • 无向:边没有方向。
  • 连通:任意两个节点之间都存在一条路径。连通是图的基本属性。
  • 无环:不存在任何闭环。即不存在任何可以从一个节点出发并最终回到该节点的路径,这样的路径被称为环。在无环图中,每条边都连接了两个不同的节点,且没有边会被重复使用来形成一个闭环。

二、无根树、有根树

2.1 无根树

谈到树这种树据结构,大家总会想到根节点、子节点、叶节点,但是,殊不知树其实是可以无根的。而且,无根树才是树的最基本形式。
所谓的无根,就是没有明确的根节点。
任何一颗树其实都可以看成是无根树。
比如下面这颗树:
在这里插入图片描述
看到这张图,你肯定想当然地认为它的根节点是最上面的A,这显然犯了经验主义的错误。仅就这张图来说,在别人没告诉你根节点是哪个时,任何一个节点都可视为根节点。
你可以把这张图想象成赵本山小品《牛大叔提干》中的“扯蛋”。
在这里插入图片描述
把图中任何一个蛋提拎起来,都能变成根蛋(根节点)。比如把蛋F拎起来,就可以变成下面的树:
在这里插入图片描述
这就是无根数。
对于无根树,度的定义变了。因为不知道谁是老祖宗,也就分不清哪个是父亲,哪个是儿子。所以无根数中度不再用孩子的个数定义,而是指一个节点相邻的节点的个数。因此,对无根树来说,叶子是度为1的节点。

2.2 有根树(一般树)

如果指定一个节点作为根节点,无根树就变成了有根树。
虽然无根树是树的最基本形式,但是它没有根,没有层次,就像是无源之水,无本之木,没法研究。
所以有根树才是我们搞研究的树的一般形式,因此有根树也被称为“一般树”。
在编程中,当我们提到“树”这一术语时,如果没有特别指明是无根树,那么通常默认是指有根树(或一般树)。
因为有了根,所有节点间的父子关系就完全确定下来了,树的层次及各种参数(比如高度、度)也就确定下来了。
于是,也就有了这些有根树的特点:

  • 每个结点有零个或多个子结点。
  • 没有父结点的结点称为根节点。
  • 每一个非根结点有且只有一个父结点。
  • 除了根节点外,每个子结点可以分为多个不相交的子树。
    我们在研究树时,总会把树等同于有根树,说树有这些特点,但是我们也不要忘了,实际上只有有根树才有这些特点。

三、无序树、有序树

3.1 无序树

若树中每个结点的各子树从左到右是没有次序的(即可以互换),则称该树为无序树。无根树就是一种无序树,因为它没有特定的根节点,所以各子树之间没有固定的次序。
特点:无序树的子树可以互换位置,即兄弟节点之间没有顺序关系。

3.2 有序树

若树中每个节点的各子树看成是从左到右有次序的(即不能互换),则称该树为有序树。有根树可以是有序树,因为它的子树之间可以具有固定的次序。
特点:有序树的子树不能互换位置,即兄弟节点之间有顺序关系。比如二叉树就是一种有序树,左子树和右子树是严格区分的。

关于树的更多内容介绍,参见以下文章:
树的定义与相关概念全解析:信息学奥赛“树”知识构成
“树”的简明介绍
“树”的高度的计算——CSP-J1真题详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

金创想

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值