我代表树木说话

2020-10-12 07:05:35

树与链表相似,因为它们是由节点和链接组成的。不过,两者之间肯定有一些不同之处。让我们来找出是什么使树成为树。

在我之前的帖子中,我讨论了数组和链表。数组和链表是非线性数据结构。它们只能被顺序遍历。树有一点不同。它们是非非线性数据结构。非线性数据结构不像线性数据结构那样是按顺序组织的,所以必须非顺序遍历才是有意义的。

不过,别担心。这篇文章不会关注树木的穿越。相反,让我们确保知道什么是树。

父节点:连接到较低级别的一个或多个节点(子节点)的节点。

使用上图,让我们复习一下我们刚刚学到的一些术语。A是R oot节点。A也是子节点B、C和D的父节点。C是子节点B、C和D的父节点。节点B、C和D共享相同的父节点A。这使它们成为兄弟节点。节点E和F也是兄弟节点,因为它们都有节点C作为父节点。最后,节点B、D、E、E、C和D共享相同的父节点A。这使它们成为兄弟节点。它们是兄弟节点,因为它们都有节点C作为父节点。最后,节点B、节点C、节点D和节点F共享相同的父节点A。这使得它们成为兄弟节点。它们是兄弟节点,因为它们都有节点C作为父节点。最后,节点B、节点C、节点D和节点F共享相同的父节点A。这使得它们成为兄弟节点。它们是兄弟节点,因为它们都有节点C作为父节点。和F是叶节点,因为它们没有任何子节点。

这里有几个更关键的术语,它们对谈论树木很有帮助。

子树:子树是主树的一部分。我们可以从树中挑选一个节点。该节点和它下面的所有节点都是子树。

深度:计算一个节点到根节点的距离。最简单的方法是从根节点开始,然后计算某个节点和根节点之间存在的边数。

高度:从一个节点开始。计算该节点与其距离最远的叶节点之间存在的边数。这就是高度。

上图显示了不同节点的深度和高度。每个圈出的部分代表一个不同的子树。总共有六个不同的子树。

这篇帖子不会涉及太多关于不同类型的树的细节。但是,至少熟悉一些常用的不同类型的树仍然是一个好主意。

好的,让我们至少讨论一下N元树。我简单地把N看作描述有最多孩子的父节点的数字。例如,看第一个数字。A节点有最多的孩子。但是,它有3。N是3。这就是3元树。让我们来看下一个数字。没有特别的一个节点有最多的孩子。但是,我们来看看下一个数字。但是,没有一个特别的节点有最多的孩子。但是,这就是一个三叉树。让我们来看下一个数字。但是,没有一个特别的节点有最多的孩子。但是,任何一个节点最多的子节点是2。N是2。这使得它是一棵二叉树。或者更通俗地说,它是一棵二叉树。

在这一点上,你可能会想知道树实际上是在哪里使用的。这里有一个树结构给你:文件夹。是的,有点头脑发热,对吗?!当你上下导航目录时,在某些方面你是在遍历树结构。所以,下次你在派对上,一定要告诉你的朋友,你经常遍历树结构。他们会认为你非常聪明。

或者这个怎么样?我最近一直在学习Reaction,所以可以肯定的是,当我得知DOM实际上是一个树结构时,我非常惊讶。

文档对象模型模型(DOM)是一个跨平台和独立于语言的接口,它将XML或HTML文档视为树形结构,其中每个节点都是代表文档一部分的对象。

自己挖掘一下吧(我至少得说一句双关语,抱歉)。“我想你会发现,在编程的大世界里,我们周围到处都是树!”