b inary s earch t rees
play

B INARY S EARCH T REES Acknowledgement: The course slides are - PowerPoint PPT Presentation

BBM 202 - ALGORITHMS D EPT . OF C OMPUTER E NGINEERING B INARY S EARCH T REES Acknowledgement: The course slides are adapted from the slides prepared by R. Sedgewick and K. Wayne of Princeton University. T ODAY BSTs Ordered


  1. 
 BBM 202 - ALGORITHMS D EPT . OF C OMPUTER E NGINEERING B INARY S EARCH T REES 
 Acknowledgement: The course slides are adapted from the slides prepared by 
 R. Sedgewick and K. Wayne of Princeton University.

  2. T ODAY ‣ BSTs ‣ Ordered operations ‣ Deletion

  3. Binary Search Tree (BST) • Last lecture, we talked about binary search & linear search • One had high cost for reorganisation, • The other had high cost for searching • In this lecture we will use Binary Trees, for searching • Plan in a nutshell: • Assert a more strict property compared to the Heap-Property (in priority-queues), Remember what that was? • Know exactly which subtree to look for at each node 3

  4. 
 
 
 
 
 Binary search trees Definition. A BST is a binary tree in symmetric order. root a left link a subtree A binary tree is either: • Empty. right child • Two disjoint binary trees (left and right). of root null links Anatomy of a binary tree parent of A and R Symmetric order. Each node has a key, 
 key S left link and every node’s key is: of E E X A R • Larger than all keys in its left subtree. 9 value associated C H • Smaller than all keys in its right subtree. with R keys smaller than E keys larger than E Anatomy of a binary search tree 4

  5. BST representation in Java Java definition. A BST is a reference to a root Node . A Node is comprised of four fields: • A Key and a Value . • A reference to the left and right subtree. smaller keys larger keys private class Node { private Key key; BST private Value val; private Node left, right; Node key val public Node(Key key, Value val) { left right this.key = key; this.val = val; } BST with larger keys BST with smaller keys } Binary search tree Key and Value are generic types; Key is Comparable 5

  6. BST implementation (skeleton) public class BST<Key extends Comparable<Key>, Value> { private Node root; root of BST private class Node { /* see previous slide */ } public void put(Key key, Value val) { /* see next slides */ } public Value get(Key key) { /* see next slides */ } public void delete(Key key) { /* see next slides */ } public Iterable<Key> iterator() { /* see next slides */ } } 6

  7. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. successful search for H S E X A R C H M 7

  8. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. compare H and S successful search for H (go left) H S E X A R C H black nodes could M match the search key 8

  9. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. successful search for H S H E X A R C H M 9

  10. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. successful search for H compare H and E S (go right) H E X A R C H M 10

  11. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. successful search for H S E X A R H C H M 11

  12. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. successful search for H S E X A R H compare H and R (go left) C H M 12

  13. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. successful search for H S E X A R C H H M 13

  14. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. successful search for H S E X A R C H H compare H and H (search hit) M 14

  15. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. unsuccessful search for G S E X A R C H M 15

  16. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. compare G and S unsuccessful search for G (go left) G S E X A R C H M 16

  17. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. unsuccessful search for G S G E X A R C H M 17

  18. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. unsuccessful search for G compare G and E S (go right) G E X A R C H M 18

  19. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. unsuccessful search for G S E X A R G C H M 19

  20. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. unsuccessful search for G S E X A R G compare G and R (go left) C H M 20

  21. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. unsuccessful search for G S E X A R C H G M 21

  22. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. unsuccessful search for G S E X A R C H G compare G and H (go left) M 22

  23. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. unsuccessful search for G S E X A R C H G M 23

  24. Binary search tree operations Search. If less, go left; if greater, go right; if equal, search hit. unsuccessful search for G S E X A R C H G M no more tree (search miss) 24

  25. Binary search tree operations Insert. If less, go left; if greater, go right; if null, insert. insert G S E X A R C H M 25

  26. Binary search tree operations Insert. If less, go left; if greater, go right; if null, insert. compare G and S insert G (go left) G S E X A R C H M 26

  27. Binary search tree operations Insert. If less, go left; if greater, go right; if null, insert. insert G S G E X A R C H M 27

  28. Binary search tree operations Insert. If less, go left; if greater, go right; if null, insert. insert G compare G and E S (go right) G E X A R C H M 28

  29. Binary search tree operations Insert. If less, go left; if greater, go right; if null, insert. insert G S E X A R G C H M 29

  30. Binary search tree operations Insert. If less, go left; if greater, go right; if null, insert. insert G S E X A R G compare G and R (go left) C H M 30

  31. Binary search tree operations Insert. If less, go left; if greater, go right; if null, insert. insert G S E X A R C H G M 31

  32. Binary search tree operations Insert. If less, go left; if greater, go right; if null, insert. insert G S E X A R C H G compare G and H (go left) M 32

  33. Binary search tree operations Insert. If less, go left; if greater, go right; if null, insert. insert G S E X A R C H G M 33

  34. Binary search tree operations Insert. If less, go left; if greater, go right; if null, insert. insert G S E X A R C H G M no more tree (insert here) 34

  35. Binary search tree operations Insert. If less, go left; if greater, go right; if null, insert. insert G S E X A R C H G M 35

  36. Binary search tree operations Insert. If less, go left; if greater, go right; if null, insert. insert G S E X A R C H G M 36

  37. BST search Get. Return value corresponding to given key, or null if no such key. successful search for R unsuccessful search for T S S E X E X A R A R C H R is less than S C H so look to the left T is greater than S M M so look to the right black nodes could match the search key S S E X E X A R A R C H gray nodes cannot C H M match the search key T is less than X R is greater than E M so look to the left so look to the right S link is null so T is not in tree E X (search miss) A R found R H C (search hit) so return value M 37

  38. 
 
 
 
 
 
 
 
 
 
 
 
 
 BST search: Java implementation Get. Return value corresponding to given key, or null if no such key. public Value get(Key key) { Node x = root; while (x != null) { int cmp = key.compareTo(x.key); if (cmp < 0) x = x.left; else if (cmp > 0) x = x.right; else if (cmp == 0) return x.val; } return null; } Cost. Number of compares is equal to 1 + depth of node. 38

  39. BST insert Put. Associate value with key. inserting L S E X A R Search for key, then two cases: C H M • Key in tree ⇒ reset value. P search for L ends • Key not in tree ⇒ add new node. at this null link S E X A R C H M P create new node L S E X A R C H M reset links L P on the way up Insertion into a BST 39

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend