树和优先级队列

时间:2013-05-16 20:08:53

标签: algorithm binary-tree

我正在尝试解决一个有点困难的练习,因为我必须从树的模板类(一种RedBlack或BinarySearch Tree)开始实现优先级队列。

使用看起来像

的模板
class Node
  int key
  Node left
  Node right
  Node parent
  int leftNodes
  int rightNodes

最初,当我必须插入一个新元素时,我试图完全填充树的一个级别,然后使用InOrderTreeTRaversal / Sort算法填充数组并从该数组生成BinarySearch树并替换为新的根元素原来的。假设有一个平衡的树。

不幸的是,这种方法似乎不合适,因为树必须模拟 maxheap属性,以便在每次插入/删除时保持平衡树(并且我的代码在填充时效果不佳完全是一个树的水平)。有可能实现具有堆功能的树吗?我的意思是每个元素大于或等于其子元素的树,插入后保持平衡,并在删除根节点(更大的关键元素)时具有自动平衡功能?

1 个答案:

答案 0 :(得分:0)

您可能想要实现二进制堆,请参阅http://en.wikipedia.org/wiki/Binary_heap

IIRC这种数据结构的主要优点之一是它可以嵌入到阵列中(因为它具有平衡性)。 Heapsort使用这种数据结构进行就地排序。