Tira, 1. välikoe, tehtävä 3. Malli: a) public static void asetaSyvyydet(Puu juuri) { asetaSyvyydet(juuri, 0); return; } public static void asetaSyvyydet(Puu juuri, int syvyys) { if (juuri != null) { juuri.syvyys = syvyys; asetaSyvyydet(juuri.vasen, syvyys + 1); asetaSyvyydet(juuri.keski, syvyys + 1); asetaSyvyydet(juuri.oikea, syvyys + 1); } return; } b) public static void asetaKorkeudet(Puu juuri) { asetaKorkeudetRekursio(juuri); return; } public static int asetaKorkeudetRekursio(Puu juuri) { if (juuri == null) return -1; int vasen = asetaKorkeudetRekursio(juuri.vasen); int keski = asetaKorkeudetRekursio(juuri.keski); int oikea = asetaKorkeudetRekursio(juuri.oikea); juuri.korkeus = Math.max(Math.max(vasen, keski), oikea) + 1; return juuri.korkeus; } Arvostelusta: Oikeasta ratkaisusta 4 pistettä per tehtävä. Pienestä syntaksivirheestä ei välttämättä rokotettu, useammasta tai isommista vähäsen. Staattisten muuttujien turhasta (eli kaikesta) käytöstä saanut huomautuksen, mutta pisteitä ei ole vähennetty. Virheellisestä ratkaisusta, jossa kuitenkin ollut hieman oikeaa ideaa esim. puun läpikäynnin suhteen yksi piste. Yleisiä virheitä: Laskettu solmujen korkeus vähentämällä solmun syvyys puun syvyydestä, vastattu oikein mutta väärään tehtävään (2p).