Transcript Bild 1

Övning 3
www.nada.kth.se/~mhj/tilda
Binärträd
Binärträd
insert(5)
insert(2)
insert(6)
insert(8)
insert(9)
insert(4)
insert(7)
5
2
6
8
4
7
9
Binärträd
root
public class Node {
int BinTree()
nr;
new
Node left;
Node right;
insert(5)
insert(2)
public Node(int
this.nr = nr;
insert(6)
left = null;
right = null;
insert(8)
}
}
insert(9)
insert(4)
insert(7)
5
nr) {
2
6
4
8
7
9
public class BinTree {
private Node root;
public BinTree() {
root = null;
}
public void insert(int nr) {
if (root == null)
root = new Node(nr);
else
insert(root, nr);
}
public void insert(Node n, int nr) {
if(nr < n.nr) {
if (n.left == null)
n.left = new Node(nr);
else
insert(n.left, nr);
}
else if (nr > n.nr) {
if (n.right == null)
n.right = new Node(nr);
else
insert(n.right, nr);
}
}
}
public class Ex1BinaryTree {
public static void main(…) {
BinTree tree=new BinTree();
tree.insert(7);
tree.insert(4);
tree.insert(9);
tree.insert(6);
tree.insert(3);
}
}
tree
root null
nr 7
l null r null
nr 4
nr 9
l null r null
nr 3
l null r null
l null r null
nr 6
l null r null
public class BinTree {
private Node root;
public BinTree() {
root = null;
}
public void insert(int nr) {
root = insert(root, nr);
}
public Node insert(Node n, int nr) {
if (n == null)
return new Node(nr);
public class Ex2BinaryTree {
public static void main(…) {
BinTree tree=new BinTree();
tree.insert(7);
tree.insert(4);
tree.insert(9);
tree.insert(6);
tree.insert(3);
}
}
tree
root null
nr 7
l null r null
else if (nr < n.nr)
n.left = insert(n.left, nr);
else if (nr > n.nr)
n.right = insert(n.right, nr);
nr 4
nr 9
l null r null
l null r null
return n;
}
}
nr 3
l null r null
nr 6
l null r null
public class BinTree {
private Node root;
public BinTree() {
root = null;
}
public int sum() {
return sum(root);
}
public int
if (n ==
return
else
return
sum(Node n) {
null)
0;
public class Ex3BinaryTree {
public static void main(…) {
BinTree tree=new BinTree();
tree.insert(7);
tree.insert(4);
tree.insert(9);
tree.insert(6);
tree.insert(3);
tree.sum();
29
} }
tree
root null
29
nr 7
l null r null
n.nr + sum(n.left) +
sum(n.right);
13
}
9
nr 4
nr 9
l null r null
3
nr 3
}
l null r null
l null r null
6
nr 6
l null r null
public class BinTree {
private Node root;
public BinTree() {
root = null;
}
public int noOfNodes() {
return noOfNodes(root);
}
public int
if (n ==
return
else
return
noOfNodes(Node n) {
null)
0;
public class Ex4BinaryTree {
public static void main(…) {
BinTree tree=new BinTree();
tree.insert(7);
tree.insert(4);
tree.insert(9);
tree.insert(6);
tree.insert(3);
tree.noOfNodes(); 5
} }
tree
root null
5
nr 7
l null r null
1 + noOfNodes(n.left) +
noOfNodes(n.right);
3
}
1
nr 4
nr 9
l null r null
1
nr 3
}
l null r null
l null r null
1
nr 6
l null r null
public class BinTree {
private Node root;
public BinTree() {
root = null;
}
public int depth() {
return depth(root);
}
public int
if (n ==
return
else
return
depth(Node n) {
null)
0;
public class Ex5BinaryTree {
public static void main(…) {
BinTree tree=new BinTree();
tree.insert(7);
tree.insert(4);
tree.insert(9);
tree.insert(6);
tree.insert(3);
tree.depth(); 3
} }
tree
root null
3
nr 7
l null r null
1 +
Math.max(depth(n.left),
depth(n.right));
2
}
1
nr 4
nr 9
l null r null
1
nr 3
}
l null r null
l null r null
1
nr 6
l null r null
public class BinTree {
private Node root;
public BinTree() {
root = null;
}
public int nrOfLeaves() {
return nrOfLeaves(root);
}
public int nrOfLeaves(Node n) {
if (n == null)
return 0;
public class Ex6BinaryTree {
public static void main(…) {
BinTree tree=new BinTree();
tree.insert(7);
tree.insert(4);
tree.insert(9);
tree.insert(6);
tree.insert(3);
tree.nrOfLeaves(); 3
} }
tree
3
nr 7
l null r null
else if (n.left == null &&
n.right == null)
return 1;
else
return nrOfLeaves(n.left) +
nrOfLeaves(n.right);
}
root null
2
nr 4
nr 9
l null r null
1
nr 3
}
1
l null r null
l null r null
1
nr 6
l null r null
Binärträd
public class BinaryNode {
String object;
Object
namn;
int key;
medlemsNummer;
BinaryNode left;
BinaryNode right;
public BinaryNode
(String o,
(Object
n, int k)
m) {
namn = =
object
n;o;
medlemsNummer
key
= k;
= m;
left = null;
right = null;
}
Henrik
49
key
Victoria
34
Hanna
78
}
Fredrik
7
Zlatan
40
Kristin
57
import java.io.*;
public interface MioI {
/** Läs en rad, glufsa radbytet, returnera raden */
public String getLine() ;
/** Läs ett ord avgränsat av blanka och returnera det */
public String getWord() ;
/** Läs ett heltal avgränsat av blanka och returnera det*/
public int getInt() ;
/** Läs decimaltal avgränsat av blanka och returnera det*/
public double getDouble() ;
/** Läs ett tecken och returnera det */
public char getChar() ;
/** Tjuvtitta på nästa tecken och returnera det */
public char nextChar() ;
/** Glufsa eventuella blanka på tur att läsas */
public void skipBlanks() ;
public interface LagraI {
// lagrar objektet object med nyckeln key
public void insert(Object object, int key);
// hämtar objektet med nyckeln key
public Object get(int key);
}
public class Lagra implements LagraI {
public void insert(Object object, int key) {
// här finns kod som sparar objektet object med nyckeln key
}
public Object get(int key) {
// här finns kod som returnerar objektet med nyckeln key
}
}
public class TestaLagra {
public static void main(String [] args) {
Lagra lagra = new Lagra();
lagra.insert(”Pelle”, 4);
System.out.println((String) lagra.get(4)); Pelle
}
}