Giter Club home page Giter Club logo

algorithms_homework's Introduction

Этот репозиторий будет содержать все домашние работы по семинарам по Алгоритмы и структуры данных.

Урок 2. Структуры данных. Массивы. Алгоритмы массивов.

Задание:

Реализовать алгоритм пирамидальной сортировки (сортировка кучей).

Урок 3. Структуры данных. Связный список.

Задание:

(Автотест) В классе Answer реализуйте метод reverse, который принимал бы на вход односвязный список и разворачивал бы его.

Урок 4. Структуры данных дерево и хэш-таблица

Задание:

Необходимо преобразовать собранное на семинаре дерево поиска в полноценное левостороннее красно-чёрное дерево. Реализовать метод добавления новых элементов с балансировкой.

  • Красно-чёрное дерево имеет следующие критерии:
  • Каждая нода имеет цвет (красный или черный);
  • Корень дерева всегда черный;
  • Новая нода всегда красная;
  • Красные ноды могут быть только левым дочерним элементом;
  • У красной ноды все дочерние элементы черного цвета.

Соответственно, чтобы данные условия выполнялись, после добавления элемента в дерево необходимо произвести балансировку, благодаря которой все критерии выше станут валидными. Для балансировки существует 3 операции:

  • левый малый поворот
  • правый малый поворот
  • смена цвета.

Критерии применения этих операций следующие:

  • Если правый дочерний элемент красный, а левый черный, то применяем малый правый поворот
  • Если левый дочерний элемент красный и его левый дочерний элемент тоже красный, то применяем малый левый поворот
  • Если оба дочерних элемента красные, то делаем смену цвета
  • Если корень стал красным, то перекрашиваем его в черный

Критерии оценивания задания: Слушатель преобразовал собранное на семинаре дерево поиска в полноценное левостороннее красно-черное дерево и реализовал в нём метод добавления новых элементов с балансировкой.

algorithms_homework's People

Contributors

ritorta avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.