Najneskorší termín odovzdania: 17.3.2019 (nedeľa) o 21:00
Odovzdávané súbory: Osoba.java, Uzol.java
Doplňujúce požiadavky:
V triede Osoba implementujte metódu pocetJedinacikovVGeneracii, ktorá vráti počet všetkých potomkov tejto osoby, ktorí sú v zadanej generácii potomkov tejto osoby a zároveň sú jedináčikovia (ich rodič má len jedno dieťa). Pri číslovaní generácií platí, že generáciu 1 tvoria deti osoby, generáciu 2 vnúčatá osoby, generáciu 3 pravnúčatá osoby, atď.
Do triedy Uzol pridajte metódu jeVyvazeny, ktorá vráti, či strom, ktorého koreňom je daný uzol, je uzlovo vyvážený. Povieme, že strom je uzlovo vyvážený, ak (1) počet prvkov uložených v ľavom a pravom podstrome sa líši nanajvýš o 1 a (2) ľavý a pravý podstrom daného uzla sú vyvážené.
Bonus (pre fajnšmekrov): +3 body za riešenie bežiace v čase O(n), kde n je počet uzlov stromu, ktorého koreňom je uzol, na ktorým túto metódu voláme (Rada: vytvorte inú pomocnú privátmu metódu alebo metódy, ktorá vám umožnia úlohu vyriešiť v uvedenom čase). Pre udelenie bonusu sa vyžaduje argumentácia, prečo má uvedený algoritmus časovú zložitosť O(n).
Do triedy Uzol pridajte statickú metódu vytvorBVS, ktorá vráti referenciu na novovytvorený koreňový uzol binárneho vyhľadávacieho stromu naplného zadanými hodnotami. Vytvorený binárny strom musí mať zároveň minimálnu možnú výšku.
Trieda Uzol: