Kezdőoldal » Számítástechnika » Programozás » Tudnátok segíteni ebben a...

Tudnátok segíteni ebben a feladatban? Python

Figyelt kérdés

Implementálnom kell egy függvényt (pontosabban osztályt) aminek bemenete egy bináris fa gyökere és vissza kell adni az összes 3 elemű részfa összegét a fában.

Feltöltöttem pastebinre, van példa és magyarázat hozzá:

https://pastebin-com/u31rxdhG

(a kötőjelet írjátok át pontra, nem enged rendesen linkelni)


Ötleteket várnék igazából mert nem tudom hogy kéne hozzákezdeni.



2020. ápr. 22. 20:18
 1/8 anonim ***** válasza:
68%
Mondjuk kezd el felépíteni a fát.
2020. ápr. 22. 20:55
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:

A fát nem nekem kell felépíteni, az nem része a feladatnak.

Igaz valami teszt fával majd ki kell próbálnom a megoldásomat de ahhoz előbb megoldásig kéne eljutnom.

2020. ápr. 22. 21:03
 3/8 anonim ***** válasza:

Fák bejárására keress rá. Jellemzően rekurzívan érdemes csinálni, tehát mondjuk egy függvény mindig a gyökértől indul, és annak a csomópontnak minden gyerekére meghívja önmagát, és paraméterként kapja a gyereket, mint az alatta lévő részfa gyökerét. A visszaadott érték lehet a gyerekek száma +1 (önmaga). Ezeket kell összegezni egy csomópont összes gyerekére és lehet ellenőrizni, hogy az adott csomópont alatt hány gyerek volt. Ez csak a darabszám, az összegzéshez már csak kis kiegészítés kell.

Ez most kicsit zanza lett, de talán érthető a lényeg.

2020. ápr. 23. 03:57
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
69%

Hát a feladat szerint max 10 lehet a fa mélysége, így nyugodtan lehet rekurzív megoldást alkalmazni.

Írsz két segédfüggvényt, az egyik visszaadja adott részfa méretét, a másik az elemek összegét.

Meghívod a fára az előbbit, aztán a 3 elemű részfákra az utóbbit, az összegeket pedig összeadod.

Ha nem tanultál DP-t, akkor ennyi, ha igen, akkor meg optimalizálhatsz, mert a méretek számítása ugye így exponenciális komplexitáshoz vezet, ezt lehet lineárisra javítani.

2020. ápr. 23. 06:26
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:
100%
*négyzeteshez, nem exponenciálishoz
2020. ápr. 23. 07:01
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:

Ok itt tartok:

https://pastebin-com/AqGURv9z

Megvan a két metódus, jól visszaadják a fa elemszámát és az elemek összegét.

De nem tudom hogy kéne ezeket jól felhasználni. Pontosabban elméletben asszem értem csak nem tudom implementálni. Hogy válogatom ki a 3 elemszámúakat? Végig megyek minden részfán és ha 3 elemszámú, akkor hozzáadom valami listához pl?

2020. ápr. 23. 10:04
 7/8 anonim ***** válasza:
100%

Nem kell lista. A threeSum metódus is rekurzív implementáció legyen, gondold át mik a base case-ek.

Ha null a fád, akkor nyilván 0-át kell visszaadni.

Ha nem null, akkor lekéred a méretét.

Innen 3 eset van:

- a méret pontosan 3 => lekéred az összeget és hozzá adod a válaszhoz

- a méret kisebb, mint 3 => 0 (biztosan nincs 3 elemű részfa)

- a méret nagyobb, mint 3 => rekurzívan megvizsgálod a gyerekeket

2020. ápr. 23. 10:40
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:

Asszem működik, köszi.

A DP megoldást nem tudom hogy kell de jó lesz így is szerintem.

2020. ápr. 23. 12:16

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!