📅  最后修改于: 2021-01-08 06:11:50             🧑  作者: Mango
树是代表单个元素或节点之间的层次关系的离散结构。父级不超过两个子级的树称为二叉树。
定义-树是一个连通的无环无向图。 $ G $中的每对顶点之间都有一条唯一的路径。具有N个顶点的树包含$(N-1)$个边。 0度的顶点称为树的根。 1度顶点称为树的叶节点,内部节点的度至少为2。
示例-以下是树的示例-
一棵树的中心是一个偏心率最小的顶点。顶点$ X $在树$ G $中的偏心度是顶点$ X $与树的任何其他顶点之间的最大距离。最大偏心度是树的直径。如果一棵树只有一个中心,则称为“中心树”;如果一棵树只有一个以上的中心,则称为“双中心树”。每棵树都可以是中心树或中心树。
步骤1-从给定树中删除所有度为1的顶点,并同时删除其入射边。
步骤2-重复步骤1,直到剩下一个边或一个顶点或两个边。如果只剩下一个顶点,则它是树的中心;如果只剩下一个边连接的两个顶点,则它是树的双中心。
问题1
找出以下树的中心/双中心-
解
首先,我们将移除所有度为1的顶点,并移除其入射边,并得到以下树-
同样,我们将移除所有度为1的顶点,并移除其入射边,并得到以下树-
最终,我们得到了单个顶点“ c”,并且停止了算法。由于存在单个顶点,因此该树具有一个中心“ c”,并且该树是中心树。
问题2
找出以下树的中心/双中心-
解
首先,我们将移除所有度为1的顶点,并移除其入射边,并得到以下树-
同样,我们将移除所有度为1的顶点,并移除其入射边,并得到以下树-
最后,我们剩下两个顶点“ 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 $的左子树的所有顶点的值都小于或等于$ V $,内部节点$ V $的右子树的所有顶点的值都小于或等于大于或等于$ V $。从根节点到最深节点的链接数是二进制搜索树的高度。
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) |