当前位置: 首页 > 编程笔记 >

算法 - 树的定义和性质

王豪
2023-03-14
本文向大家介绍算法 - 树的定义和性质,包括了算法 - 树的定义和性质的使用技巧和注意事项,需要的朋友参考一下

树是代表各个元素或节点之间的层次关系的离散结构。 父级不超过两个子级的树称为二叉树。

树及其属性

定义-树是一个连通的无环无向图。G中的每对顶点之间都有一条唯一的路径。顶点数为N的树包含(N-1)个边。0度的顶点称为树的根。1度顶点称为树的叶节点,内部节点的度至少为2。

示例-以下是树的示例-

一棵树的中心和双中心

一棵树的中心是一个偏心率最小的顶点。树G中顶点X的偏心度是顶点X与树的任何其他顶点之间的最大距离。最大偏心距是树的直径。如果一棵树只有一个中心,则称为“中心树”;如果一棵树只有一个以上的中心,则称为“双中心树”。每棵树都可以是中心树或中心树。

标记树

定义-标记树是指为其顶点分配1到n唯一编号的树。我们可以手工为n的较小值计数这些树,从而推测出一个通用公式。具有n个顶点的标记树的数量为n n-2。如果两个标记树的图是同构的,并且两个树的对应点具有相同的标记,则它们是同构的。

示例

未贴标签的树木

定义-无标签树是指其顶点未分配任何数字的树。n个顶点的标记树的数量为$\ frac {(2n)!} {(n + 1)!n!} $(n加泰罗尼亚语数字)

示例

根树

根树G是具有特殊节点的连接的无环图,该特殊节点称为树的根,每个边直接或间接地起源于该根。有序的有根树是每个内部顶点的子级都有序的有根树。如果根树的每个内部顶点都具有不超过m个子节点,则称为m元树。如果根树的每个内部顶点都恰好有m个子树,则称其为完整的m元树。如果m = 2,则将根树称为二叉树。

二进制搜索树

二进制搜索树是满足以下属性的二进制树-

  • 顶点V的左子树中的X,值(X)≤值(V)

  • 顶点V的右子树中的Y,值(Y)≥值(V)

因此,内部节点V的左子树的所有顶点的值均小于或等于V,内部节点V的右子树的所有顶点的值均大于或等于V.从根节点到最深节点的链接数是二进制搜索树的高度。

示例

在BST中搜索密钥的算法

BST_Search(x, k)
if ( x = NIL or k = Value[x] )
   return x;
if ( k < Value[x])
   return BST_Search (left[x], k);
else
   return BST_Search (right[x], k)

二叉搜索树的复杂度


平均情况 最坏的情况下
Space Complexity 上) O(n)
搜索复杂度 O(log n) O(n)
插入复杂度 O(log n) O(n)
删除复杂度 O(log n) 上)
 类似资料:
  • 我正在用python处理树,这就是我试图解决的问题。 我所有的节点都有列表。对于每个父母,通过一次删除一个元素,从父母列表中提取孩子的列表。 假设node1是列表1[1,2,3],我希望node1有3个子项(在本例中),其中每个子项都是通过每次删除一个项从列表1中提取的列表。所以node2=[2,3]node3=[1,3]和node4=[1,2] 我正在使用anytree库,但在复杂节点上找不到足

  • 本文向大家介绍确定性和非确定性算法之间的差异,包括了确定性和非确定性算法之间的差异的使用技巧和注意事项,需要的朋友参考一下 在编程的上下文中,“算法”是依次执行一组明确定义的指令,以执行特定任务并获得所需的输出。在这里,我们说一组定义的指令,这意味着如果某个指令以预期的方式执行,那么某个地方的用户就会知道这些指令的结果。 根据有关指令结果的知识,有两种算法,即-确定性算法和非确定性算法。以下是两种

  • 我的程序有问题。例如,我有5个字段。这些字段的值为或<代码>错误字段可以删除。所以我想找到这些领域的所有可能组合。 我的想法是:例如,我有一个包含这些字段的XML 字段1,正确 字段2,正确 字段3,错误 字段4,错误 第五场,错 结果应该是: 8种组合。 表示删除,表示不删除。 我无法实现复制功能。所以我只有4个Xmls结果: 有人能帮我吗? 首先,我感谢你的第一次支持。 字段矩阵类看起来像:

  • 我这里有一个算法。 点击这里查看算法图像 它的作用是遍历一个数组并找到3个最大值并返回它们的总和。例如,数组[1,2,3,4,5]将返回12(3 4 5=12)。 图像中的算法说它是O(nlogk)。但这是我无法理解的。 以下是我对图像中第一个循环的看法: Heap的方法“插入()”和“删除()”,它们都取O(logn)。所以在first for循环中,它通过添加它们的运行时来生成O(2*logn

  • 问题内容: 我对二叉树有一些疑问: Wikipedia指出,当“完整的二叉树是其中所有级别(可能除了最后一个级别)均已完全填充且所有节点都位于最左侧”的二叉树时,该二叉树即已 完成 。最后的“越远越好”的段落是什么意思? 如果(1)它是空的,或者(2)它的左右子级是平衡的,并且左树的高度在以下高度的1之内,则格式正确的二叉树被称为“高度平衡”。正确的树,取自如何确定二叉树是否平衡?,这是正确的还是

  • 主要内容:决策树算法原理,决策树剪枝策略本节我们对决策算法原理做简单的解析,帮助您理清算法思路,温故而知新。 我们知道,决策树算法是一种树形分类结构,要通过这棵树实现样本分类,就要根据 if -else 原理设置判别条件。因此您可以这样理解,决策树是由许多 if -else 分枝组合而成的树形模型。 决策树算法原理 决策树特征属性是 if -else 判别条件的关键所在,我们可以把这些特征属性看成一个 集合,我们要选择的判别条件都来自于