Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

AlgStr / Библиотека / POSIBNIK / Нелинейные структуры данных

.DOC
Скачиваний:
83
Добавлен:
23.03.2015
Размер:
408.58 Кб
Скачать

Нелинейные структуры данных (многоуровневые списки, деревья, сети). Изображение, представление, обход бинарных деревьев.

К нелинейным структурам относятся многоуровневые списки, деревья, сети. Среди нелинейных структур данных наиболее важными являются деревья, поэтому начнем рассмотрение нелинейных С.Д. с деревьев. Понятие деревьев естественно возникает при попытке классифицировать или структурировать какое – то подмножество объектов. Деревья очень важны при хранении информации. Теперь дадим определение дереву. Деревом называется конечное множество Т, состоящее из одного или более узлов, таких, что имеется один специально выделенный узел, называемый корнем этого дерева и остальные узлы (исключая корень) содержатся в m>=0 попарно непересекающихся множествах Т1, Т2, Т3,…..Тm, каждое из которых в свою очередь является деревом. Деревья Т1, Т2, Т3,…..Тm называются поддеревьями данного корня. Это рекурсивное определение непустого дерева. Рекурсивность является естественной характеристикой деревьев как в информатике так ив природе. При работе с деревьями используется своя терминология. Степень узла – кол-во поддеревьев. Степень дерева – мах степень узлов. Концевой узел (лист) – узел нулевой степени. Регулярное дерево – все узлы разветвления имеют одну и ту же степень. Пустое дерево также будем считать деревом и обозначать его NIL. Высотой дерева называется мах уровень узла –1, т.е. мах разность уровней. Если имеет значение относительный порядок поддеревьев, то дерево называется упорядоченным. Если порядок расположения поддеревьев данного узла не существенен, то дерево ориентированное, иначе – упорядоченное. Упорядоченные деревья, в которых для каждого узла м.б. 0,1,2 сына называется бинарным. Изображение деревьев. Существует много способов представления деревьев. Приведем самые распространенные.

1) 2)

3) 4) (A(B(D)(E))(C(F)(G(K))(I)))

5)ABD.E..CF.GK..I… Такое изображение удобно при вводе из внешних носителей. Здесь точка ставится когда закончилось поддерево какого – то уровня. 6)Использование индексации F-дерево; F[1]-первое поддерево; F[1][1]-первое поддерево первого поддерева. Представление дерева. 1)На базе массива или вектора. Это так называемое сплошное представление. Здесь удобно описывать плотные статические деревья (не имеющие внутри никаких пробелов). В случае, когда все же есть пустоты, то на место пустот в массиве ставится признак пустоты, но тогда теряется преимущество в экономии памяти. 2)Ссылочное представление. здесь возможны 2 варианта а)ссылка – относительный адрес б)ссылка – абсолютный адрес. Предположим, что мы имеем дерево

При описании обходов будем ссылаться на него, как на пример. Под обходом будем понимать обработку всех элементов дерева. Классифицируем обходы бинарных деревьев. 1)Левосторонний (инфиксный, обратный, симметричный).Сначала обходим левое поддерево, затем корень и правое поддерево. В нашем случае 2-10-5-1-6-3-7. 2)Правосторонний (инфиксный, обратный, симметричный). В нашем случае 7-3-6-1-5-10-2. 3)Прямой обход (обход в глубину сверху вниз или префиксный). В нашем случае 1-2-5-10-3-6-7 либо при обходе справа 1-3-7-6-2-5-10. 4)Концевой (обход снизу или постфиксный) 10-5-2-6-7-3-1 либо при обходе справа 7-6-3-10-5-2-1. 5)Горизонтальный обход. В нашем случае 1-2-3-5-6-7-10. Рассмотрим еще оду нелинейных структур данных – сеть. Введем понятие сети. Имеется сеть мелких объектов (узлов) и они соединены между собой дугами – это и есть С.Д. сеть. В математике сеть принято представлять как граф. Граф =<V,E>, где V – множество узлов, E – множество дуг = V*V. Граф может быть ориентированным и не ориентированным. Это ориентированный граф, если любому ребру l=(v,w) в графе есть ребро l’=(w,v). Если эти пары считать за одну, то такой граф принято называть неориентированным. Представление графов (сетей). 1)Матрицы смежности. 2)Списки смежности. Под обходом, как и ранее, будем понимать обработку всех элементов графа. Существует два основных способа обхода графа. 1)Обход в глубину. 2)Обход в ширину. Оба способа ориентированы на то, чтобы сначала обходить близкие вершины, а потом уже дальше.