/** * * * bjarneh@ifi.uio.no * * Oppgave 2: a) Skriv en metode int antall(BinNode t) som returnerer antall noder i t. b) Skriv en metode int sum(BinNode t) som returnerer summen av tallverdien til samtlige noder i t. Oppgave 3: i denne oppgaven skal vi implementere disse funksjonene lokalt i BinNode dvs. slik at vi kan kalle root.sum(); root.antall(); * * */ class Main { public static void main (String[] args){ BinNode r = new BinNode(5); r.add(4); r.add(23); r.add(-11); r.add(100); r.add(1); r.add(11); r.add(2); Main m = new Main(); System.out.println("antall "+ m.antall(r)); System.out.println("sum "+ m.sum(r)); System.out.println("antall2 "+ r.antall()); System.out.println("sum2 "+ r.sum()); } /** * oppgave 2 * */ int sum(BinNode t){ if(t == null){ return 0; }else{ return t.data + sum(t.right) + sum(t.left); } } public int antall(BinNode t){ if(t == null){ return 0; }else{ return 1 + antall(t.left) + antall(t.right); } } } class BinNode { BinNode(int _data){ this.data = _data; } int data; BinNode left; BinNode right; /** * oppgave 3 * */ int antall(){ int lokalt_antall = 1; if(this.left != null){ lokalt_antall += this.left.antall(); } if(this.right != null){ lokalt_antall += this.right.antall(); } return lokalt_antall; } int sum(){ int lokal_sum = this.data; if(this.left != null){ lokal_sum += this.left.sum(); } if(this.right != null){ lokal_sum += this.right.sum(); } return lokal_sum; } void add(int a){ if(a == this.data){ ; // do nothing }else{ if(a < this.data){ if(left == null){ left = new BinNode(a); }else{ left.add(a); } }else if(a > this.data){ if(right == null){ right = new BinNode(a); }else{ right.add(a); } } } } }