偏序树和二叉树一样吗?

Are partially ordered trees the same as binary trees?

我对偏序树的工作原理有点困惑。它们有点像二叉树吗?另外,它最适合做什么?

例如,如果我将 5,6,4,9,3,1,7 插入到一个空树中,我会得到:

      5
     / \
    4   6
  /      \
 3       9
/       /
1      7

二叉树是一种特殊的形状树。具体来说,二叉树是一种树,其中每个节点可以有 0、1 或 2 个子节点。二叉树对哪些值可以存储在节点中或这些值如何相互关联没有限制,因此以下所有都是有效的二叉树:

     1           4             9
    /           / \           / \
   3           2   6         3   6     
  / \         /     \       / \   \
 3   2       1       8     0   2   4 

偏序树是一种树,其中对哪些值可以位于树中的位置有一组特定的限制。具体来说,偏序树(顺便说一句,通常称为堆序树)是其中每个节点的值都大于其每个子节点的所有值的树。 (有时您会看到此 属性 要求每个节点的值都小于其所有子节点的值;这本质上是相同的)。但是,对于偏序树中每个节点可以有多少个子节点没有限制 - 偏序 属性 表示值可以去哪里,而不是树的形状。例如,这里有一些偏序树:

          4            9             3
         /|\          / \             \
        3 2 1        4   5             2
       / \          /|\   \             \
      0   2        3 3 3   3             1

这些树中的前两个是偏序树而不是二叉树,而最后一个既是偏序树又是二叉树。

您询问了您将在何处使用偏序树。许多著名和重要的数据结构——二叉堆、二项式堆、斐波那契堆等——都是作为偏序树的集合实现的,这些树具有附加的结构属性。这些可用于实现快速优先级队列,它可以加快许多著名算法的速度,例如寻找最短路径的 Dijkstra 算法和寻找最小生成树的 Prim 算法。

请记住,偏序树与二叉搜索树不同。在您最初的问题中,您展示了一个树的示例,该树将通过将一系列值插入到一个空的二叉搜索树中而形成。虽然这是对的,但这完全独立于偏序树。

希望对您有所帮助!

我不太清楚你的意思。一棵binary tree是一棵分支因子为2的树,即每个节点有0-2children。所以你这里的树也是二叉树。

也许你的意思是 binary search tree (BST)(还有,有序二叉树),这就是你所展示的。

BSTs
按这些插入规则排序,从根开始:
1:如果插入的节点小于一个节点,向左检查child
2:如果插入的节点大于一个节点,则向右勾选child
3:如果没有找到child,在此处插入数字作为节点

例子
因此,例如,第一项 5 将成为根。
那么6,大于5,就会变成对的child.
4,少了就变成剩下child.
9大于5,所以向右走,看到6,还是更大,变成6的右child。 3 既小于 5 又小于 4,所以它变成了 4 的左边 child。 1 沿着同样的路径一直向下,成为 3 的左边 child。 最后7大于5就往右走,大于6就又往右走,小于9就变成左child.

如您所见,插入的 顺序 对于 BST 的结构非常重要。

优势
BST 的优点是可以使用与 binary search allow insertion, lookup, and deletion times of O(log n), which is quite good. So they are best used in situations in which search time is important, and in which frequent insertion/deletion will be required. Additionally they are memory efficient 类似的方法进行搜索,并且占用的空间不会 space 超过它们的项目数。

偏序树
我不熟悉偏序树,但根据 some googling,您似乎 而不是 在这里展示一个。它们似乎是树,其中每个 parent 都严格大于其 children.