Двоично дърво Дърво - Т

Двоично дърво

Вашето внимание е поканено на клас, който е незаменим при работа с дървовидни данни. Класът изпълнява всички нужди при работа с двоични дървета: добавяне, съхраняване, изтриване, изброяване. Описанието страда засега, но мисля, че ще го поправя в близко бъдеще, въпреки че за тези, които са запознати, предполагам, че няма да е трудно да разберат какво е какво.

Това, което е рядкост в нашия бизнес, е широката поддръжка за наследяване: полето за версия е защитено (за разлика от System.Collections.Generic.List), налични са и виртуални методи и събития.

Разбирам вашия код. и възникна въпрос. Доколкото разбирам, бинарните дървета са структури, във всеки възел на които има връзки към левия и десния клон, т.е. всеки възел има само две "деца" - ляво и дясно. според вашия код се оказва, че с възел може да съдържа толкова директни "деца", колкото искате. Дърво Т = ново дърво(10); T.Add(ново дърво(5)); T.Add(ново дърво(3)); T.Add(ново дърво(2)); Според горния код се оказва, че дървото T има три възела в полето Children. Оказва се, че дървото не е двоично. или аз нещо не разбирам?

Да, прав си. На пръв поглед такова дърво не е двоично. Ако обаче мислено си представите детската колекция в малко по-различна форма (например LinkedList), получавате просто двоично дърво. Всъщност всяко дърво без пресичане може да бъде представено като двоично дърво (Още: в двоичните дървета наистина всеки възел има връзки към 2 елемента: брат и дете. Където брат е следващият възел от същото ниво, а детето е първото дете на възела. Твърдението, че всеки възел може да има 2потомка - считам го за неправилно без това пояснение). Така че можем да предположим, че е така, само детското поле служи заосигуряване на удобен достъп до наследниците на възела. Надявам се, че не обясних твърде много.

Здравейте! Можете ли също така да публикувате изхода на цялото ви дърво в конзолата? :) и да обясните малко как да използвате този клас! Би било чудесно! ps Кодът е много красив, наистина ми харесва!