我正在开发一个需要将值存储在二叉搜索树中的应用程序。它是一些类似于实现textpad的应用程序,它将每一行存储为带有某个键的值。如果删除一行,则在O(n)中更新后面的行的键。通过将类似于行号(在示例中)的参数作为键,我能够在我的应用程序中实现O(n)时间。
有没有办法通过选择其他键来实现O(log n)时间?
答案 0 :(得分:1)
如果您需要保证二叉树的O(logN)
性能,则应使用自平衡版本,例如: Splay Tree或Red black tree
答案 1 :(得分:1)
如果您要求插入/更新,删除和搜索,请尝试使用具有良好哈希函数的Hash Table
。许多语言在C ++中提供哈希表实现unordered_map
,在python中提供dict
,在javascript中提供{}
...哦顺便说一句,你可以自己编写一个。
你也可以为{-1}}尝试一些平衡的bst,如红黑树,avl树,2-3棵树。