Деревья. Как выполнить некоторые действия с бинарным деревом?
У меня задание на самостоятельную работу. Построить бинарное дерево и выполнить с ним некоторые операции. Но вот не знаю, как это сделать. Дерево я построил, оно заполняется, выполняются обходы. С этим всё хорошо. Но вот есть 4 пункта, которые я никак не могу реализовать:
итератор для доступа к элементам дерева с операциями:
• установка на корень дерева,
• проверка конца дерева,
• доступ к данным текущего элемента дерева,
• переход к следующему по значению ключа элементу дерева,
• переход к предыдущему по значению ключа элементу дерева,
Как их выполнить? Или хотя бы дайте ссылку, где читать
Что непонятно-то?
Просто итератор, который обходит дерево. Не "за раз", а по требованию. Раз обходы уже есть, то такой итератор написать не должно составить труда.
А в чем проблема? Обходы у вас делаются, т.е. алгоритм есть. Для 1-3 нужно просто высунуть наружу итератор (указатель на узел, обернутый в класс с нужными операциями). В нем определить операции получения одного из следующих узлов и родительского.
1)установка на корень дерева- корень это самый верхний елемент. Т.е. текущий елемент надо установить на самый верхний елемент.
Я раньше тоже не везжал. Но потом понял прост прочитай про структуру обычных деревя(двоичные к примеру).
Т.е. каждый елемент имеет два поделемента. + индексы как к ним обращаться и значения которыи там храняться.
Как кокретно ты реализуешь особо не важно. Это больше теоритичиская задача.
И так вобщем это струтура данных как обычный масив. Только индексы грубо говоря по хитрей и обход.