topic 18 bi binary search trees s h t
play

Topic 18 Bi Binary Search Trees S h T "Yes Shrubberies are - PowerPoint PPT Presentation

Topic 18 Bi Binary Search Trees S h T "Yes Shrubberies are my trade I am a Yes. Shrubberies are my trade. I am a shrubber. My name is 'Roger the Shrubber'. I arrange, design, and sell shrubberies." arrange, design, and sell


  1. Topic 18 Bi Binary Search Trees S h T "Yes Shrubberies are my trade I am a Yes. Shrubberies are my trade. I am a shrubber. My name is 'Roger the Shrubber'. I arrange, design, and sell shrubberies." arrange, design, and sell shrubberies. - Monty Python and The Holy Grail CS 307 Fundamentals of 1 Computer Science

  2. The Problem with Linked Lists 8 Accessing a item from a linked list takes O(N) time for an arbitrary element 8 Binary trees can improve upon this and reduce access to O( log N ) time for the average case 8 Expands on the binary search technique and pa ds o e b a y sea c ec que a d allows insertions and deletions 8 Worst case degenerates to O(N) but this can Worst case degenerates to O(N) but this can be avoided by using balanced trees (AVL, Red-Black) Red Black) CS 307 Fundamentals of 2 Computer Science

  3. Binary Search Trees 8 A binary tree is a tree where each node has at 8 A bi i h h d h most two children, referred to as the left and right child child 8 A binary search tree is a binary tree in which every node's left subtree holds values less than the node s left subtree holds values less than the node's value, and every right subtree holds values greater than the node's value. g root 8 A new node is added as a leaf. parent 17 17 < > right child right child 11 11 19 19 l ft hild left child CS 307 Fundamentals of 3 Computer Science

  4. Attendance Question 1 8 After adding N distinct elements in random order to a Binary Search Tree what is the expected height of the tree? A. O(N 1/2 ) B B. O(logN) O(logN) C. O(N) D D. O(Nl O(NlogN) N) E. O(N 2 ) CS 307 Fundamentals of 4 Computer Science

  5. Implementation of Binary Node public class BSTNode { { private Comparable myData; private Comparable myData; private BSTNode myLeft; private BSTNode myRightC; public BinaryNode(Comparable item) bli i d ( bl i ) { myData = item; } public Object getValue() pub c Object get a ue() { return myData; } public BinaryNode getLeft() { { return myLeft; t L ft } } public BinaryNode getRight() { return myRight; y g } public void setLeft(BSTNode b) { myLeft = b; } // setRight not shown // setRight not shown } CS 307 Fundamentals of 5 Computer Science

  6. Sample Insertion 8 100, 164, 130, 189, 244, 42, 141, 231, 20, 153 8 100 164 130 189 244 42 141 231 20 153 (from HotBits: www.fourmilab.ch/hotbits/) If you insert 1000 random numbers into a BST using the naïve algorithm what is the expected height of the tree? (Number of links from root to deepest leaf.) t ? (N b f li k f t t d t l f ) CS 307 Fundamentals of 6 Computer Science

  7. Worst Case Performance 8 In the worst case a BST can degenerate into a singly linked list. 8 Performance goes to O(N) 8 2 3 5 7 11 13 17 3 5 3 CS 307 Fundamentals of 7 Computer Science

  8. More on Implementation 8 Many ways to implement BSTs 8 Using nodes is just one and even then many options and choices public class BinarySearchTree { private TreeNode root; private int size; public BinarySearchTree() { root = null; size = 0; } } CS 307 Fundamentals of 8 Computer Science

  9. Add an Element, Recursive CS 307 Fundamentals of 9 Computer Science

  10. Add an Element, Iterative CS 307 Fundamentals of 10 Computer Science

  11. Attendance Question 2 8 What is the best case and worst case Big O to add N elements to a binary search tree? Best Worst A. O(N) O( ) O(N) O( ) B. O(NlogN) O(NlogN) C. C O(N) O(N) O(NlogN) O(NlogN) D. O(NlogN) O(N 2 ) E. O(N 2 ) O(N 2 ) CS 307 Fundamentals of 11 Computer Science

  12. Performance of Binary Trees 8 For the three core operations (add, access, remove) a binary search tree (BST) has an average case performance of O(log N) 8 Even when using the naïve insertion / removal algorithms 8 no checks to maintain balance o c ec s o a a ba a ce 8 balance achieved based on the randomness of the data inserted of the data inserted CS 307 Fundamentals of 12 Computer Science

  13. Remove an Element 8 Three cases – node is a leaf, 0 children (easy) – node has 1 child (easy) – node has 2 children (interesting) CS 307 Fundamentals of 13 Computer Science

  14. Properties of a BST 8 Th 8 The minimum value is in the left i i l i i th l ft most node 8 The maximum value is in the right most node most node –useful when removing an element f from the BST th BST 8 An inorder traversal of a BST provides the elements of the BST in ascending order ascending order CS 307 Fundamentals of 14 Computer Science

  15. Using Polymorphism 8 Examples of dynamic data structures have relied on null terminated ends. – Use null to show end of list, no children 8 Alternative form – use structural recursion and polymorphism CS 307 Fundamentals of 15 Computer Science

  16. BST Interface public interface BST { public int size(); bli i t i () public boolean contains(Comparable obj); public boolean add(Comparable obj); } CS 307 Fundamentals of 16 Computer Science

  17. EmptyBST public class EmptyBST implements BST { private static EmptyBST theOne = new EmptyBST(); private EmptyBST(){} public static EmptyBST getEmptyBST(){ return theOne ; } p p y g p y (){ } public NEBST add(Comparable obj) { return new NEBST(obj); } public boolean contains(Comparable obj) { return false ; } public boolean contains(Comparable obj) { return false ; } public int size() { return 0; } } CS 307 Fundamentals of 17 Computer Science

  18. Non Empty BST – Part 1 public class NEBST implements BST { public class NEBST implements BST { private Comparable data; private BST left; private BST right; public NEBST(Comparable d){ data = d; data d; right = EmptyBST. getEmptyBST (); left = EmptyBST. getEmptyBST (); } public BST add(Comparable obj) { int val = obj.compareTo( data ); if ( val < 0 ) ( ) left = left.add( obj ); else if ( val > 0 ) right = right.add( obj ); return this ; return this ; } CS 307 Fundamentals of 18 Computer Science

  19. Non Empty BST – Part 2 public boolean contains(Comparable obj){ int val = obj.compareTo(data); if ( val == 0 ) if ( val 0 ) return true ; else if (val < 0) return left.contains(obj); else else return right.contains(obj); } public int size() { return 1 + left.size() + right.size(); } } CS 307 Fundamentals of 19 Computer Science

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