标签: c++ dictionary stl containers balance
我知道STL map / set的主流实现使用黑红树。 我的问题是:插入/删除元素时这些实现是否也会自动平衡树?
如果没有,那么当元素被排序和插入时,它将始终附加到最右边的位置。最差的查找成本是O(n)。
那么,黑红树是否会自动平衡?
答案 0 :(得分:3)
是。红黑树执行节点旋转以确保树保持平衡
答案 1 :(得分:2)
查看insert和erase std :: map 操作。
保证这些操作的最差复杂性是对数的。
实际上,使用哪种树来实现 std :: map 并不重要。但是这棵树必须为插入,擦除和其他一些操作提供必要的复杂性。基本上它意味着树必须平衡(当然,当元素插入或移出时自动平衡。)
对于 std :: set 。
答案 2 :(得分:1)
是。在每次插入后的红黑树中,如果树不平衡,树中的一些元素将被移动到新的位置。