Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd -- Kapitel 18, 12."— 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 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

6 Lite mer komplicerat träd Rot Löv Djup Höjd Storlek A DCB K JI HGF E

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 def c

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 cd e f

10 Implementation- noden 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); } } element left right

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() public void printPreorder(){ System.out.println(element); if(left!=null) left.printPreorder(); if(rigth!=null) right.printPreorder(); } a cb fe abe f c

14 Metoden printPostOrder() public void printPostOrder(){ if(left!=null) left.printPostOrder(); if(rigth!=null) right.printPostOrder(); System.out.println(element); } a cb fe efb 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 * +- ab a b

20 Tillämpning-datakomprimering a d bc

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

23 Datakomprimering - Huffman ggr 31 ggr 5 ggr 19 ggr 14 ggr I II III IV V III IIIIV V I II III IV V = = = = =


Ladda ner ppt "Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd -- Kapitel 18, 12."

Liknande presentationer


Google-annonser