Решение Clojure:
(defn pick-random [set] (let [sq (seq set)] (nth sq (rand-int (count sq)))))
Зло, с какой точки зрения?
Как всегда: нет плохих инструментов, только плохие мастера.
На моей памяти, деревья AVL имеют более медленную вставку / удаление, но более быстрое извлечение, чем Red / black. В основном из-за алгоритма баланса.
Нет, деревья AVL определенно не являются злом ни в каком отношении. Они представляют собой полностью действующую самобалансирующуюся древовидную структуру. У них, безусловно, есть характеристики производительности, отличные от красно-черных деревьев, и обычно эти различия приводят к тому, что люди предпочитают красно-черное дерево дереву AVL. Но это не делает их злыми.
Я уверен, что деревья AVL - зло так же, как GOTO - зло или BUBBLE SORT - зло.
Алгоритмы не зло, но и алгоритмы не вскакивают. и вниз, чтобы сказать вам, когда они подходят.
Здесь много информации о различия между Красно-Черным и AVL-Деревом:
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=22948
и статья, в которой сравниваются различные структуры:
http : //www.stanford.edu/~blp/papers/libavl.pdf
Короче говоря, AVL быстрее выполняет поиск, красно-черный быстрее вставляет.
Нет, они не злые, только немного сложно запрограммировать.
Деревья AVL http://www.eternalconfuzzled.com/tuts/datastructures/jsw_tut_avl.aspx
Оттуда же ссылка на Красно-Черное дерево.