python数据结构-树的基本定义

        树在计算机科学的许多领域中使用,包括操作系统,图形,数据库系统和计算机网络。树数据结构与他们的植物表亲有许多共同之处。树数据结构具有根,分支和叶。自然界中的树和计算机科学中的树之间的区别在于树数据结构的根在顶部,其叶在底部。

        第一个例子:一些动物的生物分类的实例,

        第一个属性是树是分层的。通过分层,我们的意思是树的层次结构,更接近顶部的是抽象的东西和底部附近是更具体的东西。层次结构的顶部是Kingdom ,树的下一层(上面的层的“Children”)是 Phylum ,然后是 Class ,等等。然而,无论我们在分类树中有多深,所有的生物仍然是 animals 。

        第二个属性是一个节点的所有子节点独立于另一个节点的子节点。例如,Felis 有属于Domestica 和 Leo 的孩子。Musca 也有一个名为 Domestica 的孩子,但它是一个不同的节点,并独立于 Felis 的 Domestica孩子。这意味着我们可以改变作为 Musca 的孩子的节点而不影响 Felis 的孩子。

        第三个属性是每个叶节点是唯一的。我们可以指定从树的根到唯一地识别动物王国中的每个物种的叶的路径;


        第二个例子:用HTML编写的简单网页的示例

        HTML源代码和伴随源的树说明了另一个层次结构。请注意,树的每个级别都对应于HTML标记内的嵌套级别。源中的第一个标记是 ,最后一个是 页面中的所有其余标记都是成对的。 如果你检查,你会看到这个嵌套属性在树的所有级别都是 true。 




我们已经看了树的示例,我们将正式定义树及其组件

        节点

        节点是树的基本部分。它可以有一个名称,我们称之为“键”。节点也可以有附加信息。我们将这个附加信息称为“有效载荷”。虽然有效载荷信息不是许多树算法的核心,但在利用树的应用中通常是关键的。

        边

        边是树的另一个基本部分。边连接两个节点以显示它们之间存在关系。每个节点(除根之外)都恰好从另一个节点的传入连接。每个节点可以具有多个输出边。

        根

        树的根是树中唯一没有传入边的节点。

        路径

        路径是由边连接节点的有序列表。例如,Mammal→→Carnivora→→Felidae→→Felis→→Domestica是一条路径。

        子节点

        具有来自相同传入边的节点 c 的集合称为该节点的子节点。

        父节点

        具有和它相同传入边的所连接的节点称为父节点。

        兄弟

        树中作为同一父节点的子节点的节点被称为兄弟节点。子树子树是由父节点和该父节点的所有后代组成的一组节点和边。叶节点

        子树

        子树是由父节点和该父节点的所有后代组成的一组节点和边。

        叶节点

        叶节点是没有子节点的节点。

        层数

        节点 n 的层数为从根结点到该结点所经过的分支数目。 例如,图1中的Felis节点的级别为五。根据定义,根节点的层数为零。高度树的高度等于树中任何节点的最大层数。现在已经定义了基本词汇,我们可以继续对树的正式定义。 事实上,我们将提供一个树的两个定义。 一个定义涉及节点和边。 第二个定义,将被证明是非常有用的,是一个递归定义。

        定义一:树由一组节点和一组连接节点的边组成。树具有以下属性:树的一个节点被指定为根节点。除了根节点之外,每个节点 n 通过一个其他节点 p 的边连接,其中 p 是 n 的父节点。从根路径遍历到每个节点路径唯一。如果树中的每个节点最多有两个子节点,我们说该树是一个二叉树。

        定义二:树是空的,或者由一个根节点和零个或多个子树组成,每个子树也是一棵树。每个子树的根节点通过边连接到父树的根节点。






猜你喜欢

转载自blog.csdn.net/qq_29286967/article/details/81010402
今日推荐