В учебнике, который я изучаю из (Lafore), впервые представлены красно-черные деревья и не содержит никакого псевдокода, хотя связанные с ним алгоритмы представляются довольно сложными, с множеством уникальных случаев.Что проще реализовать: 2-3-4 Дерево или Красно-Черное дерево?
Далее он представляет 2-3-4 Деревья, которые мне кажутся намного проще понять, и я бы предположил, что реализовать. Он включает в себя некоторый фактический Java-код, который очень ясен. Кажется, он подразумевает, что 2-3-4 легче реализовать, и я согласен с тем, что я видел до сих пор.
Википедии, однако, говорит обратное ... Я думаю, что это неправильно, возможно:
http://en.wikipedia.org/wiki/2-3-4_tree
2-3-4 деревья изометрия красно-черных деревьев, а это означает, что они эквивалентные структуры данных. Другими словами, для каждых 2-3-4 деревьев существует по крайней мере одно дерево красно-черного дерева с элементами данных в того же порядка. Более того, операции вставки и удаления на 2-3-4 деревьях , которые вызывают разложения, разрывы и слияния узлов, эквивалентны цвету и поворотам цветных изображений на красно-черных деревьях . Вступление к красно-черным деревьям обычно вводят 2-3-4 деревьев, потому что они концептуально проще. 2-3-4 деревья, однако, могут быть трудными реализовать на большинстве языков программирования из-за большого количества особых случаев, связанных с операциями на дереве. Красно-черные деревья проще в применении, поэтому их обычно используют.
В частности, часть о «большем количестве специальных случаев» кажется довольно назад ко мне (я думаю, что это RB, которые имеют большое количество особых случаев, а не 2-3-4). Но, я все еще учусь (и до сих пор честно не совсем полностью обернул голову вокруг красно-черных деревьев), поэтому мне бы хотелось услышать другие мнения.
В качестве опоры ... хотя я согласен с большей частью того, что говорит Лафорд, я думаю, что интересно, что он представил их в противоположном порядке по сравнению с тем, что, по словам Википедии, является обычным (2-3-4 до РБ). Я думаю, что 2-3-4 сначала будет иметь больше смысла, так как RB гораздо труднее концептуализировать. Возможно, он выбрал этот порядок, потому что RB был более тесно связан с BST, который он только что закончил в предыдущей главе.
Я не уверен, что EAS ier для реализации, но [это] (http://www.cs.purdue.edu/homes/ayg/CS251/slides/chap13b.pdf) может помочь. – Lazer
Это кажется довольно субъективным, поэтому, возможно, вы можете отредактировать вопрос, чтобы быть более конкретным относительно того, что будет «легче». Может быть, нужно просто рассмотреть количество особых случаев? –
Я понимаю, что вы говорите, но как Википедия, так и учебник, о котором я упоминал, использовали ту же общность ... т. Е. Сравнение реализаций двух отдельных алгоритмов только с точки зрения «легкости» или «простоты».«Я предполагаю, что одна идея метрики для количественного определения такого туманного слова была бы SLOC, а другая была бы« легкостью понимания », которая действительно субъективна ... но я думаю, что в большинстве случаев метрика истинна: меньше SLOC = проще понимание. – The111