Професионална програма
Loading...
+ Нов въпрос
mihayloff14 avatar mihayloff14 825 Точки
Best Answer

Идеята на трета задача е да имплементираш собствено Binary Tree. Би трябвало да изглежда така:

BinaryTree

Като цяло идеята е, че имаш една структура - Дърво, която има TreeNode. И този TreeNode има два собствени TreeNode-ове, които рекурсивно имат свои собствени такива и т.н.

Та общо взето, вида на TreeNode е - LeftNode, RightNode, Value. Имайки това предвид, от там насетне трябва да имплементираш различните логики за търсене на неща от структурата, за вмъкване на такива, махане и т.н (извършват се рекурсивно). Единствено структурата BinaryTree има един node, който е MainNode или Root.

Ето примерен сценарий:

Имаш празно дърво. Добавяш му стойност 5:

Дървото проверява дали MainNode-а му е null - Ако е, създай нов node със стойност 5 и два празни TreeNode-а.

След това добавяш стойност 9:

Дървото проверява дали MainNode e null - не е, следователно сравнява стойностите му. Ако е по-голяма прави същата операция за RightNode-а на текущия Node. Ако е по-малко, прилага операция на левия node.

В случая - MainNode не е null. Сравнява стойностите на MainNode и тази, която искаш да Add-неш. По-голяма е, следователно прави същото рекурсивно за дясната част на текущия node. Тъй като тя е null, тя става нов node със стойност 9.

Останалите операции правят нещо подобно с някои изключения като махането на елемент например което е по-сложно.

Ето и мое решение на задачата:

CustomTree

Като цяло, малко е разхвърлян кода и по-усложнен, но задачата доколкото съм я тествал работи и не ми се занимаваше да рефакторирам проекта след дългите часове, в които го правих.

3
14/02/2015 19:14:05
ph.kolarov avatar ph.kolarov 63 Точки

Може ли малко помощ... ?

Някаква идея защо не мога да бутна Payment в Customer....

http://pastebin.com/EUmVvMQd

 

 

0
a.angelov avatar a.angelov 1316 Точки

Не препокриваш ли името Payments като казваш: string Payments = this.Payments.ToString();

0
ph.kolarov avatar ph.kolarov 63 Точки

В смисъл... как така го препокривам?

Когато направя лист в мейн метода всичко работи. Обаче през класа нестава и не знам защо...

0
a.angelov avatar a.angelov 1316 Точки

В ToString метода имаш променлива: string Payments, имаш същото име и на пропъртито public List<Payment> Payments { get; set; }

Това имам в предвид.

0
19/02/2015 21:17:12
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Колеги, някой да забеляза, че са сменили домашното за Common Type System? Сега като тръгнах да оценявам домашно от тази тема и свалих отново word файла със задачите с изненада установих, че първа е допълнителна теоретична задача, за която трябва да изпратим txt файл. Някой има ли представа кога са вмъкналитази задача?

 

1
Filkolev avatar Filkolev 4482 Точки

Кофти... Въобще не съм разбрал. Скоро е било предполагам.

Не съм почнал да оценявам домашни от темата, чудя се дали да отнемам точки за липсваща 1-ва задача при положение, че дори не знаех до преди 5 минути, че има такава.

0
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Аз тотално я игнорирам тази първа задача при оценката. В понеделник започнах да си пиша това домашно, т.е. 1 ден преди крайния срок и свалих заданието от сайта и тази задача не фигурираше. Доста е тъпо така в последния момента да се сменя, без дори по някакъв начин да ни уведомят. 

0
Filkolev avatar Filkolev 4482 Точки

Може би се е предвиждало задачата да е за следващия випуск.

Но при промени - според мен задължително трябва да ни уведомяват, понеже доста хора, за да си управляват по-добре времето, работят основно с условията от предния випуск.

0