Ladda ner presentationen
Publicerades avPer-Erik Magnusson
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
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.