Najneskorší termín odovzdania: 15.3.2020 (nedeľa) o 21:00
Odovzdávané súbory: Osoba.java, Uzol.java
Doplňujúce požiadavky:
Do triedy Osoba z prednášky o stromoch pridajte metódu, ktorá vráti počet potomkov v rodostrome tejto osoby (o osobe v koreni rodostromu nevieme počet súrodencov, takže ju neuvažujeme), ktorí majú aspoň 𝑘 starších súrodencov. Predpokladáme, že deti osoby sú v jej zozname usporiadané podľa dátumu narodenia (prvé dieťa v zozname je najstaršie).
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: