二叉堆 - 插入顺序
Binary Heap - inserting order
插入顺序会影响二叉堆的结构吗?我的意思是,当以不同的顺序插入相同的元素时,是否有可能得到一些不同的父子关系,
例如:
20 6 3 5 7 8 16 10 (inserting order #1) and 6 3 20 10 16 3 7 5 (inserting order #2)
或者最终结果应该总是一样的?
如果您想象序列 1 1 1 1 2 2 和 1 1 2 1 1 2,您应该会得到不同的堆。
1 versus 1
1 1 1 2
1 2 2 1 1 2
堆可以以不同的方式存储给定的值集合。例如,如果堆恰好是一棵完美的二叉树,那么您可以在不违反堆的情况下将任何子树与其兄弟子树交换 属性.
例如,如果数据集合的值为 1、2 和 3,则有 2 个可能的堆可以表示该数据集:
1 1
/ \ / \
2 3 3 2
第一堆就是插入2before3时的结果,第二堆就是插入2after时的结果] 3.
如果我们查看具有四个值(例如 1、2、3 和 4)的输入,我们可以将其表示为四个堆:
1 1 1 1
/ \ / \ / \ / \
2 3 2 4 3 2 4 2
/ / / /
4 3 4 3
同样,插入的顺序将决定最终结果是这四个堆中的哪一个。
插入顺序会影响二叉堆的结构吗?我的意思是,当以不同的顺序插入相同的元素时,是否有可能得到一些不同的父子关系, 例如:
20 6 3 5 7 8 16 10 (inserting order #1) and 6 3 20 10 16 3 7 5 (inserting order #2)
或者最终结果应该总是一样的?
如果您想象序列 1 1 1 1 2 2 和 1 1 2 1 1 2,您应该会得到不同的堆。
1 versus 1
1 1 1 2
1 2 2 1 1 2
堆可以以不同的方式存储给定的值集合。例如,如果堆恰好是一棵完美的二叉树,那么您可以在不违反堆的情况下将任何子树与其兄弟子树交换 属性.
例如,如果数据集合的值为 1、2 和 3,则有 2 个可能的堆可以表示该数据集:
1 1
/ \ / \
2 3 3 2
第一堆就是插入2before3时的结果,第二堆就是插入2after时的结果] 3.
如果我们查看具有四个值(例如 1、2、3 和 4)的输入,我们可以将其表示为四个堆:
1 1 1 1
/ \ / \ / \ / \
2 3 2 4 3 2 4 2
/ / / /
4 3 4 3
同样,插入的顺序将决定最终结果是这四个堆中的哪一个。