Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avGunnar Andersson
1
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd Binärt träd -Filkomprimering med Huffmanträd -- Kapitel 18, 12 Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd Binärt träd -Filkomprimering med Huffmanträd -- Kapitel 18, 12
2
För utveckling av verksamhet, produkter och livskvalitet. Rekursion ? En rekursiv metod är en metod som anropar sig själv. Liknar loopar / iterationer Mycket kraftfull men något förvirrande... Rekursion är ett sätt att lösa ett problem genom att dela problemmet i flera identiska men mindre subproblem, dvs. metoden anropar sig själv med ” ett mindre argument”. Summan av 1+2+3+4+5 +......+n
3
För utveckling av verksamhet, produkter och livskvalitet. Exempel public static int sumOf(int n) { if(n==1) return 1; else return sumOf(n-1) +n; } !! basfall Se till att den rekursiva anropet alltid leder till basfallet
4
För utveckling av verksamhet, produkter och livskvalitet. Vad är ett träd datastruktur? En abstaction som beskriver...ja..just det...
5
För utveckling av verksamhet, produkter och livskvalitet. Datoranpassad träd...
6
För utveckling av verksamhet, produkter och livskvalitet. Var finns träd? Fil / Katalog strukturer! Sökning och sortering Filkomprimenring Kompilatorer
7
För utveckling av verksamhet, produkter och livskvalitet. Ny terminologi! Nod Kant Rot Löv Förälder Barn Djup Höjd 0 1 2 1 1 2 2 22 2 2 1 0 1 1 0 0 00 0
8
För utveckling av verksamhet, produkter och livskvalitet. Lite mer komplicerat träd Rot Löv Djup Höjd Storlek A DCB K JI HGF E 0 1111 22222 3 3 1012 00001 0 11 3124 11112 1
9
För utveckling av verksamhet, produkter och livskvalitet. Funktioner på träd Typiska funktioner (oftast rekursiva!) Antalet noder i ett träd Listning (traversering) av trädstrukturen
10
För utveckling av verksamhet, produkter och livskvalitet. Speciella träd Binära träd Maximalt två barn / nod Vänster / höger barn a b def c
11
För utveckling av verksamhet, produkter och livskvalitet. 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
12
För utveckling av verksamhet, produkter och livskvalitet. 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) -...............................................................
13
För utveckling av verksamhet, produkter och livskvalitet. Metoden –size() public static int size(BinaryNode n) { if (n==null) return 0; else return 1+size(n.left)+size(n.right); }
14
För utveckling av verksamhet, produkter och livskvalitet. 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
15
För utveckling av verksamhet, produkter och livskvalitet. 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
16
För utveckling av verksamhet, produkter och livskvalitet. BinaryTree klassen class BinaryTree{ } private BinaryNod root; public BinaryTree( Object item){ root=new BinaryNode(item,null,null); } public BinaryTree(){ root=null; }
17
För utveckling av verksamhet, produkter och livskvalitet. 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; }
18
För utveckling av verksamhet, produkter och livskvalitet. Tillämpning-Uttrycksträd * +- ab a b public void printPostOrder(){ if(left!=null) left.printPostOrder(); if(rigth!=null) right.printPostOrder(); System.out.println(element); }
19
För utveckling av verksamhet, produkter och livskvalitet. Tillämpning-datakomprimering a d bc
20
För utveckling av verksamhet, produkter och livskvalitet. Datakomprimering - Huffman Hej, mitt namn är Nicolina och jag försöker få mina studenter att se tjusningen i träd och komprimeringsalgoritmer! 01001000 01100101 01101010 00101100 00100000 01101101 01101001 01110100 01110100 00100000 01101110 01100001 01101101 01101111 00100000 10000100...
21
För utveckling av verksamhet, produkter och livskvalitet. 01001000 01100101 01101010 00101100 00100000 01101101 01101001 01110100 01110100 00100000 01101110 01100001 01101101 01101111 00100000 10000100... Datakomprimering - Huffman 101 1110 010 01 111 011 01 11 100 1101 101 10 011 001 1100 10... 101 1110 010 01111 01101 11100 1101101 10011001110010...
22
För utveckling av verksamhet, produkter och livskvalitet. Datakomprimering - Huffman 01001101 01101101 00110101 10101001 01010111 25 ggr 31 ggr 5 ggr 19 ggr 14 ggr I II III IV V III IIIV IV 10 11 10 000 01 001 I II III IV V = = = = =
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.