SlideServe
Menu
Préférences
© SlideServe · v2026

Binary Search Trees

habib avatar
19 diapositives · 340 Views · Jul 31, 2014

A Binary Search Tree (BST) is a data structure consisting of nodes organized in a hierarchical manner. A tree is a BST if it's empty or if its root splits the subtrees such that the left subtree contains values less than the root, and the right subtree contains values greater than the root. This guide covers the fundamental concepts of BSTs, including searching, insertion, and deletion algorithms, along with their performance characteristics, highlighting the importance of maintaining balance for optimal search efficiency.

Binary Search Trees - slide 1
01 / 19Binary Search Trees
1 / 17

Télécharger la présentation

Binary Search Trees
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. CS340 Binary Search Trees

  2. CS340 Overview of a Binary Search Tree A set of nodes T is a binary search tree if either of the following is true • T is empty • If T is not empty, its root node has two subtrees, TL and TR, such that • TLand TR are binary search trees • the value in the root node of T is greater than all values in TL and less than all values in TR

  3. CS340 Overview of a Binary Search Tree (cont.) rings Elven three shadows where kings Dwarf Mordor sky land dark stone nine lords bring bind doomed one find

  4. CS340 Recursive Algorithm for Searching a Binary Search Tree 4 • if the root is null • the item is not in the tree; return null • Compare the value of target with root.data • if they are equal • the target has been found; return the data at the root else if the target is less than root.data • return the result of searching the left subtree else • return the result of searching the right subtree

  5. CS340 Searching a Binary Tree (looking for word “one”) rings Elven three shadows where kings Dwarf Mordor sky land dark stone nine lords bring bind doomed one find

  6. CS340 Performance 6 • Search a tree is generally O(log n) • If a tree is not very full, performance will be worse • Searching a tree with only right subtrees, for example, is O(n)

  7. CS340 InterfaceSearchTree<E>

  8. CS340 BinarySearchTree<E> Class

  9. ImplementingfindMethods CS340

  10. CS340 Insertion into a Binary Search Tree

  11. CS340 Implementing the addMethods 11 /** Starter method add. pre: The object to insert must implement the Comparable interface. @param item The object being inserted @return true if the object is inserted, false if the object already exists in the tree */ public boolean add(E item) { root = add(root, item); return addReturn; }

  12. Implementing the addMethods (cont.) CS340 /** Recursive add method. post: The data field addReturn is set true if the item is added to the tree, false if the item is already in the tree. @param localRoot The local root of the subtree @param item The object to be inserted @return The new local root that now contains the inserted item */ private Node<E> add(Node<E> localRoot, E item) { if (localRoot == null) { // item is not in the tree — insert it. addReturn = true; return new Node<E>(item); } else if (item.compareTo(localRoot.data) == 0) { // item is equal to localRoot.data addReturn = false; return localRoot; } else if (item.compareTo(localRoot.data) < 0) { // item is less than localRoot.data localRoot.left = add(localRoot.left, item); return localRoot; } else { // item is greater than localRoot.data localRoot.right = add(localRoot.right, item); return localRoot; } }

  13. Removal from a Binary Search Tree • If the item to be removed has two children, replace it with the inorder predecessor rings Elven three shadows where kings Dwarf doomed Mordor sky land dark stone nine lords bring bind doomed one find

  14. CS340 Algorithm for Removing from a Binary Search Tree

  15. CS340 Implementing the deleteMethod 15 /** * Starter method delete. * @post The object is not in the tree. * @param target The object to be deleted * @return The object deleted from the tree * or null if the object was not in the tree * @throws ClassCastException if target does not implement * Comparable */ public E delete(E target) { root = delete(root, target); return deleteReturn; }

  16. CS340 Implementing the deleteMethod (cont.) 16 /*** Recursive delete method. */ private Node<E> delete(Node<E> localRoot, E item) { if (localRoot == null) { // item is not in the tree. deleteReturn = null; return localRoot; } // Search for item to delete. intcompResult = item.compareTo(localRoot.data); if (compResult < 0) {// item is smaller than localRoot.data. localRoot.left = delete(localRoot.left, item); return localRoot; } else if (compResult > 0) { localRoot.right= delete(localRoot.right, item); return localRoot; }…

  17. …} else {// item is at local root. deleteReturn = localRoot.data; if (localRoot.left == null) { // If there is no left child, return right child // which can also be null. return localRoot.right; } else if (localRoot.right == null) { // If there is no right child, return left child. return localRoot.left; } else { // Node being deleted has 2 children if (localRoot.left.right == null) { // The left child has no right child. localRoot.data= localRoot.left.data; // Replace the left child with its left child. localRoot.left = localRoot.left.left; return localRoot; } else { // Search for the inorder predecessor (ip) and localRoot.data= findLargestChild(localRoot.left); return localRoot; } } } } 17

  18. MethodfindLargestChild 18

  19. CS340 Testing a Binary Search Tree 19 • Verify that an inorder traversal will display the tree contents in ascending order after • a series of insertions • a series of deletions are performed