我正在尝试解决一个有点困难的练习,因为我必须从树的模板类(一种RedBlack或BinarySearch Tree)开始实现优先级队列。
使用看起来像
的模板class Node
int key
Node left
Node right
Node parent
int leftNodes
int rightNodes
最初,当我必须插入一个新元素时,我试图完全填充树的一个级别,然后使用InOrderTreeTRaversal / Sort算法填充数组并从该数组生成BinarySearch树并替换为新的根元素原来的。假设有一个平衡的树。
不幸的是,这种方法似乎不合适,因为树必须模拟 maxheap属性,以便在每次插入/删除时保持平衡树(并且我的代码在填充时效果不佳完全是一个树的水平)。有可能实现具有堆功能的树吗?我的意思是每个元素大于或等于其子元素的树,插入后保持平衡,并在删除根节点(更大的关键元素)时具有自动平衡功能?
答案 0 :(得分:0)
您可能想要实现二进制堆,请参阅http://en.wikipedia.org/wiki/Binary_heap