Presentation is loading. Please wait.

Presentation is loading. Please wait.

Sorted Array What is BigO for sorted list implemented as: ArrayList: – Search : – Insert(value) : – Remove(value) : LinkedList: – Search : – Insert(value)

Similar presentations


Presentation on theme: "Sorted Array What is BigO for sorted list implemented as: ArrayList: – Search : – Insert(value) : – Remove(value) : LinkedList: – Search : – Insert(value)"— Presentation transcript:

1 Sorted Array What is BigO for sorted list implemented as: ArrayList: – Search : – Insert(value) : – Remove(value) : LinkedList: – Search : – Insert(value) : – Remove(value) :

2 Sorted Array What is BigO for sorted list implemented as: ArrayList: – Search : O(logN) – Insertion : O(N) – Removal : O(N) LinkedList: – Search : O(N) – Insertion : O(N) – Removal : O(N)

3 Binary Trees & BSTs

4 Binary Tree – Each node has 0-2 children (left/right)

5 Binary Tree Can represent any tree as binary

6 Binary Tree Can represent any tree as binary – Left = first child – Right = next sibling

7 Binary Search Tree – Enforce ordering of children relative to parent – Anything on left subtree is smaller – Anything on right subtree is larger

8 Binary Search Tree Use BST maintains sorted collection with: – Search : O(logN)* – Insertion : O(logN)* – Removal : O(logN)* * Actual mileage may vary…

9 Binary Search Tree Use BST maintains sorted collection with: – Search : O(logN)* – Insertion : O(logN)* – Removal : O(logN)* But… – No random access

10 Duplicates Duplicate value approaches: 1.No duplicates : left < current < right 2.left < current <= right (duplicates on right) 3.left <= current < right (duplicates on left) 4.Duplicates stored in list in node : left < current < right 2 & 3 more complicated, especially for balanced trees

11 BST Search Searching for a value – Descend tree looking for value – Use ordering to guide search http://www.cse.hut.fi/en/research/SVG/TRAKLA2/exercises/BST_search-28.html

12 BST Search Recursive search: Search(value) return SearchHelp(root, value) SearchHelp(node, value) if node == null return false if node == value return true if value < node return SearchHelp(leftChild, value) else return SearchHelp(rightChild, value)

13 BST Search Iterative search: ItSerach(value) current = root while current != null if current == value return true if value < node current = leftChild else current = rightChild end while return false

14 BST Insertion Inserting a value – New values are always leaves – Descend tree as if searching – Insert wherever you hit null http://www.cse.hut.fi/en/research/SVG/TRAKLA2/exercises/BST_Insert-5.html

15 BST Insertion IterativeInsert Insert(value) if root == null root = new Node(value) else parent = root current = root do parent = current if value left = new Node(value) else parent->right = new Node(value)

16 BST Insertion IterativeInsert Insert(value) if root == null root = new Node(value) else parent = root current = root do parent = current if value left = new Node(value) else parent->right = new Node(value) Empty BST = Special

17 BST Insertion IterativeInsert Insert(value) if root == null root = new Node(value) else parent = root current = root do parent = current if value left = new Node(value) else parent->right = new Node(value) Insert(9)

18 BST Insertion IterativeInsert Insert(value) if root == null root = new Node(value) else parent = root current = root do parent = current if value left = new Node(value) else parent->right = new Node(value) Insert(9)

19 BST Insertion IterativeInsert Insert(value) if root == null root = new Node(value) else parent = root current = root do parent = current if value left = new Node(value) else parent->right = new Node(value) Insert(9)

20 BST Insertion IterativeInsert Insert(value) if root == null root = new Node(value) else parent = root current = root do parent = current if value left = new Node(value) else parent->right = new Node(value) Insert(9)

21 BST Insertion IterativeInsert Insert(value) if root == null root = new Node(value) else parent = root current = root do parent = current if value left = new Node(value) else parent->right = new Node(value) Insert(9)

22 BST Insertion IterativeInsert Insert(value) if root == null root = new Node(value) else parent = root current = root do parent = current if value left = new Node(value) else parent->right = new Node(value) Insert(9)

23 BST Insertion IterativeInsert Insert(value) if root == null root = new Node(value) else parent = root current = root do parent = current if value left = new Node(value) else parent->right = new Node(value) Insert(9)

24 BST Insertion Iterative Insert Insert(value) if root == null root = new Node(value) else parent = root current = root do parent = current if value left = new Node(value) else parent->right = new Node(value) Insert(9)

25 BST Insertion Recursive Insert Insert(value) root = InsertHelper(root, value) InsertHelper(curNode, value) if curNode == null return new Node(value) if value < curNode leftChild = InsertHelper(leftChild, value) else rightChild = InsertHelper(rightChild, value) return curNode

26 BST Insertion Recursive Insert Insert(value) root = InsertHelper(root, value) InsertHelper(curNode, value) if curNode == null return new Node(value) if value < curNode leftChild = InsertHelper(leftChild, value) else rightChild = InsertHelper(rightChild, value) return curNode Insert(9)

27 BST Insertion Recursive Insert Insert(value) root = InsertHelper(root, value) InsertHelper(curNode, value) if curNode == null return new Node(value) if value < curNode leftChild = InsertHelper(leftChild, value) else rightChild = InsertHelper(rightChild, value) return curNode Insert(9) Insert(root, 9)

28 BST Insertion Recursive Insert Insert(value) root = InsertHelper(root, value) InsertHelper(curNode, value) if curNode == null return new Node(value) if value < curNode leftChild = InsertHelper(leftChild, value) else rightChild = InsertHelper(rightChild, value) return curNode Insert(9) Insert(root, 9) Insert({12}, 9)

29 BST Insertion Recursive Insert Insert(value) root = InsertHelper(root, value) InsertHelper(curNode, value) if curNode == null return new Node(value) if value < curNode leftChild = InsertHelper(leftChild, value) else rightChild = InsertHelper(rightChild, value) return curNode Insert(9) Insert(root, 9) Insert({12}, 9) Insert({6}, 9)

30 BST Insertion Recursive Insert Insert(value) root = InsertHelper(root, value) InsertHelper(curNode, value) if curNode == null return new Node(value) if value < curNode leftChild = InsertHelper(leftChild, value) else rightChild = InsertHelper(rightChild, value) return curNode Insert(9) Insert(root, 9) Insert({12}, 9) Insert({6}, 9) Insert(null, 9)

31 BST Insertion Recursive Insert Insert(value) root = InsertHelper(root, value) InsertHelper(curNode, value) if curNode == null return new Node(value) if value < curNode leftChild = InsertHelper(leftChild, value) else rightChild = InsertHelper(rightChild, value) return curNode Insert(9) Insert(root, 9) Insert({12}, 9) Insert({6}, 9)

32 BST Insertion Recursive Insert Insert(value) root = InsertHelper(root, value) InsertHelper(curNode, value) if curNode == null return new Node(value) if value < curNode leftChild = InsertHelper(leftChild, value) else rightChild = InsertHelper(rightChild, value) return curNode Insert(9) Insert(root, 9) Insert({12}, 9)

33 BST Insertion Recursive Insert Insert(value) root = InsertHelper(root, value) InsertHelper(curNode, value) if curNode == null return new Node(value) if value < curNode leftChild = InsertHelper(leftChild, value) else rightChild = InsertHelper(rightChild, value) return curNode Insert(9) Insert(root, 9)

34 BST Insertion Recursive Insert Insert(value) root = InsertHelper(root, value) InsertHelper(curNode, value) if curNode == null return new Node(value) if value < curNode leftChild = InsertHelper(leftChild, value) else rightChild = InsertHelper(rightChild, value) return curNode Insert(9)

35 CharBST BST of Chars – Allow dupes to right – Built from BSTNode

36 CharBST Print – Recursive inorder print


Download ppt "Sorted Array What is BigO for sorted list implemented as: ArrayList: – Search : – Insert(value) : – Remove(value) : LinkedList: – Search : – Insert(value)"

Similar presentations


Ads by Google