Najneskorší termín odovzdania: 19.3.2012 (pondelok) o 21:00
Odovzdávané súbory: Osoba.java
, Uzol.java
Doplňujúce požiadavky:
V triede Osoba
implementujte metódu najdlhsiaRodovaLinia
, ktorá pre zadaný uzol vráti najdlhšiu možnú líniu potomkov danej osoby.
V strome uvedenom vyššie sú 3 najdlhšie rodové línie:
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é.
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.
Z cvičení viete, že postupnosť uzlov binárneho vyhľadávacieho stromu pri inorder prechode tvorí usporiadanú postupnosť. Teda nasledujúce tvrdenie platí: Ak T je BVS, potom jeho postupnosť inorder prechodu je usporiadaná. Platí však aj opačné tvrdenie? Teda je pravda, že ak postupnosť inorder prechodu je usporiadaná, potom T je BVS?
Dokážte alebo vyvráťte: Ak postupnosť inorder prechodu je usporiadaná (=rastúca), potom T je BVS.
V prípade, že toto tvrdenie nie je pravdivé uveďte kontrapríklad - nájdite taký binárny strom, ktorý nie je BVS, no jeho postupnosť inorder prechodu je usporiadaná. Ak je tvrdenie pravdivé, formálne ho dokážte (napríklad indukciou na dĺžku postupnosti inorder prechodu).
Riešenie tejto úlohy odovzdajte najneskôr do začiatku cvičení 20.3.2012 svojmu cvičiacemu.
Trieda Uzol
: