二叉搜索树更新

时间:2012-09-16 22:05:41

标签: algorithm tree binary-search-tree

我正在开发一个需要将值存储在二叉搜索树中的应用程序。它是一些类似于实现textpad的应用程序,它将每一行存储为带有某个键的值。如果删除一行,则在O(n)中更新后面的行的键。通过将类似于行号(在示例中)的参数作为键,我能够在我的应用程序中实现O(n)时间。

有没有办法通过选择其他键来实现O(log n)时间?

2 个答案:

答案 0 :(得分:1)

如果您需要保证二叉树的O(logN)性能,则应使用自平衡版本,例如: Splay TreeRed black tree

答案 1 :(得分:1)

如果您要求插入/更新,删除和搜索,请尝试使用具有良好哈希函数的Hash Table。许多语言在C ++中提供哈希表实现unordered_map,在python中提供dict,在javascript中提供{} ...哦顺便说一句,你可以自己编写一个。

你也可以为{-1}}尝试一些平衡的bst,如红黑树,avl树,2-3棵树。