Träd och tillämpningar Data Structures & Problem Solving using Java -- Kapitel 19, 12
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; } } element left right
BinaryTree klassen class BinaryTree{ } private BinaryNod root; public BinaryTree( Object item){ root=new BinaryNode(item,null,null); } public BinaryTree(){ root=null; }
Tillämpning- Binära Sökträd (Vad är en sökträd?) Ett binärt träd där, för vilken som hälst nod i trädet alla noder som innehåller ett värde mindre än sin egen värde befinner sig i det vänsta delträdet och alla noder som innehåller ett värde som är större än sin värde befinner sig i det högra delträdet.
Är det ett sökträd?
Operationer Find(), findMin(), findMax() Insert() Remove()
Insert ()
Insert ()
Insert ()
Insert ()
Binära Sökträd – metoden find()-mycket kort söktid
Binära Sökträd – metoden findMax()-mycket kort söktid
Binära Sökträd – metoden findMin()-mycket kort söktid
Farliga specialfall!
Remove () a) Om noden är löv
Remove () b) Om noden har ett barn
Remove () c) Om noden har två barn 3 Ersätt värdet i noden med den minsta värdet i i det högra delträdet och sedan ta bort den noden
Datakomprimering - Huffman Hej, mitt namn är Nicolina och jag försöker få mina studenter att se tjusningen i träd och komprimeringsalgoritmer!
Datakomprimering - Huffman
Huffman träd, men hur? a d bc
Datakomprimering - Huffman ggr 31 ggr 5 ggr 19 ggr 14 ggr I II III IV V III IIIIV V I II III IV V = = = = =