сетевое оборудование, электрические цепи.
Множеством называется некая совокупность элементов.
Все элементы множества - различны, т.е. в любом множестве нет двух копий одного и того же элемента.
Обозначение - большие латинские буквы: \(A\), \(B\), \(C\) и т.д.
Перечисление элементов множества: \(A=\{2, 3, 5\}\)
Принадлежность элемента множеству: \(2 \in A\), \(6 \notin A\)
Пустое множество: \(\emptyset\)
Мощность множества - количество элементов в нём. Обозначение \(|A|\)
Граф - это упорядоченная пара \(G=(V, E)\), состоящая из не пустого множества вершин \(V\) и множества рёбер \(E\).
Вершины графа называются смежными, если у них есть общее ребро.
Матрица смежности M
Элемент \(M[i, j]=1\), если \((i, j)\) является ребром графа \(G\) и \(M[i, j]=0\) в противоположном случае.
Список смежности
Списком смежности для вершины \(i\) называется список всех вершин, смежных с вершиной \(i\), причём определённым образом упорядоченный.
Опишем интерфейс класса Graph.
Graph(n): n - максимальное количество вершин в графе.add_edge(v, w): Добавить ребро между вершинами v и whas_edge(v, w): Являются ли вершины v и w смежными. Возвращает логическое значение.neighbors(v): Возвращает список вершин, смежных с вершиной vset_value(v, st): Сохранить строку st в вершине vget_value(v): Получить строку, сохранённую в вершине vМатрица смежности
0 1 2 3
--------
0| 0 1 1 0
1| 1 0 1 0
2| 1 1 0 1
3| 0 0 1 0
Вершины смежные с 0: [1, 2]
Обход графа - систематизированное посещение каждой вершины и каждого ребра графа.
Ключевая идея - возможность отмечать вершины как посещённые и не посещённые. Вершины будем помещать в один из контейнеров на выбор - стек или очередь.
Дерево - это совокупность элементов (узлов) и отношений, образующих иерархическую структуру узлов.
Дерево - это частный случай графа.
Один из узлов дерева называется корнем - узел без родительских узлов.
Если узел не имеет дочерних узлов, он называется листом.
Дерево называется бинарным, если каждый узел содержит не больше двух дочерних узлов.
Опишем тип данных Node для создания узла дерева.
Node(value, left, right): Создать узел, хранящий значение value, left - ссылка на узел слева, right - ссылка на узел справа.is_leaf(): Является ли узел листом. Возвращает логическое значение.value: Получить значение.left: Получить ссылку на узел слева.right: Получить ссылку на узел справа.Левое поддерево → Корень → Правое поддерево
Корень → Левое поддерево → Правое поддерево
Левое поддерево → Правое поддерево → Корень
Дано арифметическое выражение, содержащее только сложение и скобки. Вычислите значение выражения.
Вычислим значение выражения \(3+(7+4)\). На основе выражения построим бинарное дерево.
корень - последний выполняемый оператор;
листья - числа, над которыми выполняются действия.