Какие имена используются в информатике для некоторых из следующих типов данных дерева?

Иногда мне приходится использовать различные типы деревьев в Haskell, и я не знаю, как они называются или где получить больше информации об алгоритмах, использующих их, или об экземплярах классов для них, или даже о каком-то предварительно -существующем коде или библиотеке по взлому..

Примеры:

Бинарные деревья, в которых метки находятся на листьях или ветвях:

data BinTree1 a = Leaf | 
                  Branch {label :: a, leftChild :: BinTree1 a, rightChild :: BinTree1 a}

data BinTree2 a = Leaf {label :: a} | 
                  Branch {leftChild :: BinTree2 a, rightChild :: BinTree2 a}

Аналогично деревьям с метками для каждого дочернего узла или общей меткой для всех их дочерних элементов:

data Tree1 a = Branch {label :: a, children :: [Tree1 a]}

data Tree2 a = Branch {labelledChildren :: [(a, Tree2 a)]}

Иногда я начинаю использовать Tree2, и каким-то образом в процессе разработки он рефакторится в Tree1, что кажется более простым в обращении, но я никогда не задумывался об этом.Есть ли здесь какая-то двойственность?

Кроме того, если вы можете опубликовать другие виды деревьев, которые вы считаете полезными, пожалуйста, сделайте это.

В общем, :все, что вы расскажете мне об этих деревьях, будет полезно!:)

Спасибо.

РЕДАКТИРОВАТЬ:

Уточнение :это не домашнее задание. Просто я обычно заканчиваю тем, что использую эти типы данных и создаю экземпляры (Functor, Monad и т. д. )и, возможно, если я изменю их имена, я найду библиотеки с реализованным материалом и больше теоретической информации о них.

Обычно, когда библиотека на Hackage имеет в названии Tree, она реализует BinTree2 или какую-то версию не -бинарного дерева с метками только на листьях, поэтому мне кажется, что, возможно, Tree2 и BinTree2 имеют какое-то другое имя или идентификатор.

Также я чувствую, что может быть какая-то двойственность или изоморфизм, или способ превратить код, использующий Tree1, в код, использующий Tree2, с некоторым преобразованием. Есть? Может быть, это просто впечатление.

6
задан Rafael S. Calsaverini 20 August 2012 в 10:46
поделиться