Presentation laddar. Vänta.

Presentation laddar. Vänta.

Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd

Liknande presentationer


En presentation över ämnet: "Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd"— Presentationens avskrift:

1 Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd
-- Kapitel 18 , 12

2 Vad är ett träd?

3 Datoranpassat träd...

4 Fil / Katalog strukturer!
Var finns träd? Fil / Katalog strukturer! Sökning och sortering Filkomprimenring Kompilatorer

5 Ny terminologi! Nod Kant Rot Löv Förälder Barn Djup Höjd 1 2 2 1

6 Lite mer komplicerat träd
11 3 Rot Löv Djup Höjd Storlek A 1 1 3 1 1 1 1 2 2 1 4 B C D E 1 2 1 2 1 2 1 2 2 2 1 F G H I J 3 1 K

7 Funktioner på träd Typiska funktioner (oftast rekursiva!)
Antalet noder i ett träd Listning (traversering) av trädstrukturen

8 Speciella sorters träd
Binära träd Maximalt två barn / nod Vänster / höger barn a b c d e f

9 Binära träd- rekursiv definition
Ett binärt träd är antligen tom (null) eller består av en rot, ett vänster träd och ett höger träd. a b e c d f

10 Implementation- noden
element left right class BinaryNode{ private Object element; private BinaryNode left; private BinaryNode right; public BinaryNode( Object theElement, BinaryNode lt, BinaryNode rt){ element=theElement; left=lt; right=rt; } public BinaryNode(){ this( null,null,null); }

11 Implementation - metoder
public Object getElement() public BinaryNode getLeft() public void printPreorder() public void printPostOrder() public void printInOrder(); public static int size(BinaryNode n) public static int height( BinaryNode n)

12 Metoden –size() public static int size(BinaryNode n) { if (n==null)
return 0; else return 1+size(n.left)+size(n.right); }

13 Metoden printPreorder()
a public void printPreorder(){ System.out.println(element); if(left!=null) left.printPreorder(); if(rigth!=null) right.printPreorder(); } b c e f a b e f c

14 Metoden printPostOrder()
a public void printPostOrder(){ if(left!=null) left.printPostOrder(); if(rigth!=null) right.printPostOrder(); System.out.println(element); } b c e f e f b c a

15 BinaryTree klassen class BinaryTree{ } private BinaryNod root;
public BinaryTree( Object item){ root=new BinaryNode(item,null,null); } public BinaryTree(){ root=null; }

16 BinaryTree-metoden merge()
public void merge( Object item, BinaryTree t1, BinaryTree t2) { // Testa om inte t1 och t2 är samma träd if( t1.root== t2.root && t1.root!=null) // rapportera fel root = new BinaryNode( item, t1.root,t2.root); if(this!=t1) t1.root=null; if(this!=t2) t2.root=null; }

17 Tillämpning- Binära Sökträd (Mycket kortare söktider!)

18 Farliga specialfall!

19 Tillämpning-Uttrycksträd
* + - a b b a

20 Tillämpning-datakomprimering
b c

21 Datakomprimering - Huffman
Hej, mitt namn är Nicolina och jag försöker få mina studenter att se tjusningen i träd och komprimeringsalgoritmer!

22 Datakomprimering - Huffman
101 1110 010 01 111 011 11 100 1101 10 001 1100 ... 101 1110 010 01 111 011 11 100 1101 10 001 1100 ...

23 Datakomprimering - Huffman
1 I 25 ggr I II III IV V II 31 ggr III 5 ggr IV 19 ggr V 14 ggr I = 11 II = 10 III = 000 IV = 001 V = 01


Ladda ner ppt "Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd"

Liknande presentationer


Google-annonser