INF1020 ukeoppgaver uke 1 (29/8-2/9) ==================================== OPPGAVE 1: ---------- MAW (Marc Allen Weiss) oppgave 2.1 og 2.7 OPPGAVE 2: ---------- a) F?lgende programbit vil sortere en heltallsarray int[] A = new int[n]. Av hvilken orden er tidsforbruket til dette programmet? for (int i = 0; i < n; i++) { minj = i; for (j = i + 1; j < n; j++) { if (A[j] < A[minj]) { minj = j; } } bytt(i, minj); } b) For en gitt n > 0, vil f?lgende program finne (i L2) log2(n), rundet av nedover. Av hvilken orden er tidsforbruket til programmet? i = 1; L2 = -1; while (i <= n) { i = i * 2; L2++; } OPPGAVE 3: ---------- MAW oppgave 4.1, 4.2, 4.3 OPPGAVE 4: ---------- Gitt et tre der nodene er av f?lgende klasse: class TreNode { int data; TreNode forsteBarn; TreNode nesteSosken; } (Et tomt tre representeres ved referansen null.) a) Skriv en metode int sum(TreNode t) som returnerer summen av tallverdien til samtlige noder i t. b) Utvid klassen med attributtene int dybde, hoyde, antall, bladAvstand; Vi definerer "bladAvstanden" til en node som veilengden ned til n?rmeste blad. H?yden til en node er tilsvarende veilengden ned til fjerneste blad. Skriv en rekursiv metode som g?r gjennom treet, og som setter inn de riktige verdiene i alle nodene. Attributtet "antall" skal angi antall noder i subtreet definert av noden (inklusive den selv). NB: Det kan l?nne seg ? lage et par konkrete tr?r for ? teste at metodene faktisk gj?r det de skal! OPPGAVE 5: ---------- Vi har et ROTRETTET tre gitt ved noder av klassen: class Node { Node forelder; // Andre data... } der "forelder" angir trestrukturen, med rot.forelder = null. Treet skal omstruktureres med en annen node i treet som rot. Omstruktureringen skal gj?res slik at noder som er forbundet med foreldre-relasjonen fortsatt skal v?re forbundet, men ved at forelder/barn kan v?re byttet. Skriv en metode (med den nye roten som parameter) som etablerer det nye rotrettede treet. HINT: Fors?k ? beskrive n?yaktig hvilke pekere som m? bytte retning.