[Homework] Common Type System (Dec 2015) - Решения
Колеги, ето задачи 1-3 от мен, ако някой се е преборил с 4та нека сподели, ще ми е интересно да разгледам.
https://github.com/vdonchev/OOP-CommonTypeSystem-Homework
Поздрави!
Колеги, ето задачи 1-3 от мен, ако някой се е преборил с 4та нека сподели, ще ми е интересно да разгледам.
https://github.com/vdonchev/OOP-CommonTypeSystem-Homework
Поздрави!
Вариант:
В корена на дървото се съдържа цялата логика а BinarySearchTree класа е само обвивка която добавя няколко метода. Дървото може да се клонира много лесно като само клонираш корена, за който са закачени всички под-дървета.
Приложил съм и вариант на динамично клониране с BreathFirstSearch. Пробвах и с DFS но това, за да стане новото дърво трябва да се изнесе в статична променлива, така че не съм се занимавал.
Цялата функционалност е скрита в корена и представлява няколко DFS-базирани метода за намиране, триене, добавяне.
Това е класът TreeNode (корен):
Като цяло лесният начин е само да кажеш deep-clone на корена, на който преди това си развил цялото дърво, така автоматично се копират под-дърветата е всичко надолу.
В случай, че се иска динамично копиране на всичко е метода - AssembleTree в BinarySearchTree класа.
(с метода Add() не съм се занимавал много, но лесно може да се добави)
За итератора - записвам всички елементи в лист и итерирам през него. Както и да се направи тук е един от трите варианта:
ляво - корен - дясно, ляво - дясно - корен, корен - ляво - дясно.
Не претендирам, че е идеално, но върши работа.
Като доказателство, че работи:
Ще може ли малко помощ по кода ми? Имам два проблема:
1) Първият проблем е, че ми дава грешка. Виждам, че някъде при Equals или == или и двете не съм написал нещо като хората, но не мога да разбера какво. Дебъгвах и дебъгвах и не схващам.
2) Другият проблем ми е, че ако в мейн класа не съм сложил вътре в неймспейса using Models;, а само
using _02.Customer.Models; отгоре ме кара задължително да пиша Models.Customer = new Models.Customer. Някаква идея защо е така?
Благодаря предварително :)
Код: https://github.com/BiserVStoev/SoftUni-OOP/tree/master/10.%20OOP-Common-Type-System/02.%20Customer
Относно въпрос едно:
Използвай презаписания Equals метод за да сравниш двата обекта при == оператора:
return Customer.Equals(a, b);
а после при отрицанието (!=) изпозлвай вече овърлоднатия == оператор:
return !(a == b);
Поздрави!
Благодаря ти за решението, ще го прегледам внимателно и ще пробвам да го напиша сам :)
Поздрави!
Може да разгледаш лабовете от курса по Структури от данни. След това тази задача ще ти е доста по-лесна.