11.07.2015 Views

Data Structures and Algorithm Analysis - Computer Science at ...

Data Structures and Algorithm Analysis - Computer Science at ...

Data Structures and Algorithm Analysis - Computer Science at ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

168 Chap. 5 Binary Treessubroot105 2095Figure 5.16 An example of deleting the node with minimum value. In this tree,the node with minimum value, 5, is the left child of the root. Thus, the root’sleft pointer is changed to point to 5’s right child.Removing a node with given key value R from the BST requires th<strong>at</strong> we firstfind R <strong>and</strong> then remove it from the tree. So, the first part of the remove oper<strong>at</strong>ionis a search to find R. Once R is found, there are several possibilities. If R has nochildren, then R’s parent has its pointer set to null. If R has one child, then R’sparent has its pointer set to R’s child (similar to deletemin). The problem comesif R has two children. One simple approach, though expensive, is to set R’s parentto point to one of R’s subtrees, <strong>and</strong> then reinsert the remaining subtree’s nodes one<strong>at</strong> a time. A better altern<strong>at</strong>ive is to find a value in one of the subtrees th<strong>at</strong> canreplace the value in R.Thus, the question becomes: Which value can substitute for the one being removed?It cannot be any arbitrary value, because we must preserve the BST propertywithout making major changes to the structure of the tree. Which value ismost like the one being removed? The answer is the least key value gre<strong>at</strong>er than(or equal to) the one being removed, or else the gre<strong>at</strong>est key value less than the onebeing removed. If either of these values replace the one being removed, then theBST property is maintained.Example 5.7 Assume th<strong>at</strong> we wish to remove the value 37 from the BSTof Figure 5.13(a). Instead of removing the root node, we remove the nodewith the least value in the right subtree (using the deletemin oper<strong>at</strong>ion).This value can then replace the value in the root. In this example we firstremove the node with value 40, because it contains the least value in theright subtree. We then substitute 40 as the new value for the root node.Figure 5.17 illustr<strong>at</strong>es this process.When duplic<strong>at</strong>e node values do not appear in the tree, it makes no differencewhether the replacement is the gre<strong>at</strong>est value from the left subtree or the least valuefrom the right subtree. If duplic<strong>at</strong>es are stored, then we must select the replacement

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!