标签:java priority-queue binary-search-tree
我需要为我的算法II类“创建一个由二叉搜索树(BST)实现的优先级队列”.但是,我不确定如何将二进制搜索树用作优先级队列.有人可以澄清这项任务要求我做什么吗?
作为参考,以下是PriorityQueue必须实现的方法:
add – adds a new item to the queue
peek – returns the head of the queue
remove – removes the head of the queue and returns it
search – returns the position of an element in the queue, or -1 if it is not found.
size – returns the total number of elements in the queue
inorder – returns an in-order, comma-separated string of every element in the queue
preorder – returns an pre-order, comma-separated string of every element in the queue
height – returns the height of the underlying BST
提前感谢您的任何建议!!
解决方法:
始终订购Binary Search Tree,如果插入新物品,将始终保持秩序.
The major advantage of binary search trees over other data structures is that the related sorting algorithms and search algorithms such as in-order traversal can be very efficient.
那是你的优先队列.在可能的实施方式中,具有最低优先级的项目将获得最高编号,具有最高优先级的项目将获得最低编号.如果这些项目被插入到BST中并且您按顺序读取它,则您具有应该处理队列的顺序.
要处理队列,您将“弹出”树中的第一个元素,其余部分将由BST自动排序.
您唯一需要注意的是将新元素正确插入树中,如果删除第一个元素会发生什么.
您的方法将映射到树操作,添加在正确的位置插入新项目并在必要时修改树,例如返回树的大小,然后将遍历树.
希望能让它更清晰一些.
标签:java,priority-queue,binary-search-tree 来源: https://codeday.me/bug/20190626/1295902.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。