Najneskorší termín odovzdania: 20.3.2022 (nedeľa) o 18: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
: