12.07.2015 Views

C++ - VideoTutorials-bg.com

C++ - VideoTutorials-bg.com

C++ - VideoTutorials-bg.com

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

не е идеално балансирано, тъй като лявото му поддърво има три върха,а дясното му – 1 (разликата е по-голяма от 1). Това двоично дърво едвоично дърво с балансирана височина.Дефиниция. Двоично дърво се нарича двоично дърво с балансиранависочина или по-просто балансиранo дървo, ако за всеки негов връхвисочините (дълбочините) на лявото и дясното му поддървета серазличават най-много с 1. Този вид двоични дървета се наричат същоAVL-дървета.От дефинициите и примера се вижда, че всяко идеално балансиранодвоично дърво е дърво с балансирана височина, но обратното не евярно.Обикновено се изисква тези два вида двоични дървета да бъдат инаредени. Обаче алгоритъмът за включване на елемент в двоичнонаредено дърво, който използвахме за създаване на двоично нареденодърво, не създава идеално балансирано двоично наредено дърво, нитобалансирано двоично наредено дърво. Операцията за изключване наелемент също не запазва идеалната балансираност или самобалансираността на дървото.Има ефективен алгоритъм за създаване на балансирани двоичнонаредени дървета, който при включване и изключване на елемент запазвабалансираността на двоично нареденото дърво. За идеално балансиранотодвоично наредено дърво такъв не съществува.Съществува прост алгоритъм за създаване на идеално балансиранодвоично наредено дърво при следните ограничения:- елементите, които ще се включват към празното двоично нареденодърво се подават в нарастващ ред;- предварително е известен броят на върховете на дървото.Към шаблона на класа BinOrdtree ще добавим и конструктор, койтосъздава идеално балансирано двоично наредено дърво с n елемента.template BinOrdTree::BinOrdTree(int n){if (n == 0) root = NULL;else{int nLeft = (n-1)/2,217

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!