data-structures - 使用哈希图平衡 BST?
问题描述
使用哈希映射而不是指针的 BBST
我正在考虑使用哈希映射实现平衡二叉搜索树的想法。一个实现可以是这样的:哈希映射的键将是插入树中的值,哈希映射的值将是左值、右值和高度的元组(在 AVL 树的情况下)
10 H[10] = {7, 15, 2}
/ \ H[7] = {3, 8, 1}
7 15 ---> H[15] = {nil, 18, 1}
/ \ \ H[3] = H[8] = H[18] = {nil, nil, 0}
3 8 18
我不认为它比树的标准实现提供任何优势,除了您可以在恒定时间内搜索值然后搜索任何后继者或任何其他统计信息 BBST 提供的事实。我们已经可以在维护指向节点的哈希映射的帮助下做到这一点,但在我看来,这种实现更容易。
有没有人试过这个?这是个好主意吗?
解决方案
我不能说这是一个好主意还是坏主意,尽管我看不出它有什么特别的好处。在我看来,插入或删除节点会更加复杂,特别是如果你想保持树的平衡。
如果你的树允许重复键,你也会遇到一些真正的麻烦。
我认为您最好使用传统的树结构,如果您需要 O(1) 查找,请添加哈希映射。
推荐阅读
- asp.net-core - 如何将模型绑定到 ASP MVC Core 中的会话
- c++ - 在标头中声明 sqlite::database db(":memory:") 会出错
- javascript - 使用“this”关键字作为选择器
- python - 在 else 中捕获异常
- angular - 当用户直接在 URL 中输入路径时,如何加载延迟加载的路由?- 角度 7
- javascript - 检查多个 div 以查看是否存在 h3
- python - 将 Google 表格放入 Pandas 数据框
- node.js - 从数据库获取数据的问题,“渲染”功能错误
- c++ - 在使用 Poll() 的 TCP 服务器 - 客户端连接中,我需要手动设置事件吗?我永远不会到达 POLLOUT 写入套接字
- java - 用java编写多个文件的最快方法