1 / 22

Binary Search Trees

Binary Search Trees. Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park. Overview. Binary trees Binary search trees Find Insert Delete. Hierarchical Data Structures. One-to-many relationship between elements Tree

trent
Télécharger la présentation

Binary Search Trees

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Binary Search Trees Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park

  2. Overview • Binary trees • Binary search trees • Find • Insert • Delete

  3. Hierarchical Data Structures • One-to-many relationship between elements • Tree • Single parent, multiple children • Binary tree • Tree with 0–2 children per node Tree Binary Tree

  4. Trees • Terminology • Root no predecessor • Leaf no successor • Interior non-leaf • Height distance from root to leaf Root node Height Interior nodes Leaf nodes

  5. Types of Binary Trees • Degenerate – only one child • Balanced – mostly two children • Complete – always two children Degenerate binary tree Balanced binary tree Complete binary tree

  6. Degenerate Height = O(n) for n nodes Similar to linear list Balanced Height = O( log(n) ) for n nodes Useful for searches Binary Trees Properties Degenerate binary tree Balanced binary tree

  7. Binary Search Trees • Key property • Value at node • Smaller values in left subtree • Larger values in right subtree • Example • X > Y • X < Z X Y Z

  8. Binary Search Trees • Examples 5 10 10 2 45 5 30 5 45 30 2 25 45 2 25 30 10 25 Binary search trees Non-binary search tree

  9. Binary Tree Implementation Class Node { Value data; Node left, right; // null if empty void insert ( Value data1 ) { … } void delete ( Value data2 ) { … } Node find ( Value data3 ) { … } … }

  10. Polymorphic Binary Tree Implement. Interface Node { Node insert ( Value data1 ) { … } } Class EmptyNode implements Node { Node insert ( Value data1 ) { … } } Class NonEmptyNode implements Node { Value data; Node left, right; // Either Empty or NonEmpty void insert ( Value data1 ) { … } }

  11. Iterative Search of Binary Tree Node Find( Node n, Value key) { while (n != null) { if (n.data == key) // Found it return n; if (n.data > key) // In left subtree n = n.left; else // In right subtree n = n.right; } return null; } Find( root, keyValue );

  12. Recursive Search of Binary Tree Node Find( Node n, Value key) { if (n == null) // Not found return( n ); elseif (n.data == key) // Found it return( n ); else if (n.data > key) // In left subtree return Find( n.left, key ); else // In right subtree return Find( n.right, key ); } Find( root, keyValue );

  13. Example Binary Searches • Find ( 2 ) 5 10 10 > 2, left 5 > 2, left 2 = 2, found 5 > 2, left 2 = 2, found 2 45 5 30 30 2 25 45 10 25

  14. Example Binary Searches • Find ( 25 ) 5 10 10 < 25, right 30 > 25, left 25 = 25, found 5 < 25, right 45 > 25, left 30 > 25, left 10 < 25, right 25 = 25, found 2 45 5 30 30 2 25 45 10 25

  15. Binary Search Properties • Time of search • Proportional to height of tree • Balanced binary tree • O( log(n) ) time • Degenerate tree • O( n ) time • Like searching linked list / unsorted array • Requires • Ability to compare key values

  16. Binary Search Tree Construction • How to build & maintain binary trees? • Insertion • Deletion • Maintain key property (invariant) • Smaller values in left subtree • Larger values in right subtree

  17. Binary Search Tree – Insertion • Algorithm • Perform search for value X • Search will end at node Y (if X not in tree) • If X < Y, insert new leaf X as new left subtree for Y • If X > Y, insert new leaf X as new right subtree for Y • Observations • O( log(n) ) operation for balanced tree • Insertions may unbalance tree

  18. Example Insertion • Insert ( 20 ) 10 10 < 20, right 30 > 20, left 25 > 20, left Insert 20 on left 5 30 2 25 45 20

  19. Binary Search Tree – Deletion • Algorithm • Perform search for value X • If X is a leaf, delete X • Else // must delete internal node a) Replace with largest value Y on left subtree OR smallest value Z on right subtree b) Delete replacement value (Y or Z) from subtree • Observation • O( log(n) ) operation for balanced tree • Deletions may unbalance tree

  20. Example Deletion (Leaf) • Delete ( 25 ) 10 10 10 < 25, right 30 > 25, left 25 = 25, delete 5 30 5 30 2 25 45 2 45

  21. Example Deletion (Internal Node) • Delete ( 10 ) 10 5 5 5 30 5 30 2 30 2 25 45 2 25 45 2 25 45 Replacing 10 with largest value in left subtree Replacing 5 with largest value in left subtree Deleting leaf

  22. Example Deletion (Internal Node) • Delete ( 10 ) 10 25 25 5 30 5 30 5 30 2 25 45 2 25 45 2 45 Replacing 10 with smallest value in right subtree Deleting leaf Resulting tree

More Related