📜  树简介

📅  最后修改于: 2021-01-08 06:11:50             🧑  作者: Mango


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

树及其属性

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

示例-以下是树的示例-

树

一棵树的中心和双中心

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

查找树的中心和双中心的算法

步骤1-从给定树中删除所有度为1的顶点,并同时删除其入射边。

步骤2-重复步骤1,直到剩下一个边或一个顶点或两个边。如果只剩下一个顶点,则它是树的中心;如果只剩下一个边连接的两个顶点,则它是树的双中心。

问题1

找出以下树的中心/双中心-

树1

首先,我们将移除所有度为1的顶点,并移除其入射边,并得到以下树-

Tree1解决方案

同样,我们将移除所有度为1的顶点,并移除其入射边,并得到以下树-

树1解决方案删除顶点

最终,我们得到了单个顶点“ c”,并且停止了算法。由于存在单个顶点,因此该树具有一个中心“ c”,并且该树是中心树。

问题2

找出以下树的中心/双中心-

树2

首先,我们将移除所有度为1的顶点,并移除其入射边,并得到以下树-

树2解决方案

同样,我们将移除所有度为1的顶点,并移除其入射边,并得到以下树-

树2解决方案删除顶点

最后,我们剩下两个顶点“ c”和“ d”,因此我们停止了算法。由于留下了由边连接的两个顶点,因此该树具有双中心“ cd”,并且该树是双中心的。

标记树

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

带有两个顶点的标记树具有三个顶点的三个可能的标记树

未贴标签的树木

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

无标签的树带有三个顶点的未标记树具有四个顶点的两个可能的未标记树

根树

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

根树

二进制搜索树

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

  • 顶点$ V的左子树中的$ X $,值(X)\ le值(V)$
  • 顶点$ V的右子树中的$ Y $,值(Y)\ ge值(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)  

二叉搜索树的复杂度

Average Case Worst case
Space Complexity O(n) O(n)
Search Complexity O(log n) O(n)
Insertion Complexity O(log n) O(n)
Deletion Complexity O(log n) O(n)