/
Node Removal From BST Node Removal From BST

Node Removal From BST - PowerPoint Presentation

celsa-spraggs
celsa-spraggs . @celsa-spraggs
Follow
408 views
Uploaded On 2016-11-24

Node Removal From BST - PPT Presentation

Source httpwwwalgolistnetDatastructuresBinarysearchtreeRemoval Removing 4 From This Tree Removing 18 From This BST Removing 18 From This BST 18 has only one child so just elevate that child ID: 492970

bst remove node null remove bst null node return left

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Node Removal From BST" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Node Removal From BST

Source: http://www.algolist.net/Data_structures/Binary_search_tree/RemovalSlide2

Removing -4 From This TreeSlide3

Removing 18 From This BSTSlide4

Removing 18 From This BST

18 has only one child, so just elevate that child.Slide5

Removing 18 From This BST

18 has only one child, so just elevate that child.Slide6

What If Removed Node in

BST Has Two Children?

Say we wanted to remove 12.

We want the leftmost node to its right to be its replacement.Slide7

What If Removed Node in

BST Has Two Children?

19 is the leftmost node to the right of 12. It is also the smallest number that is larger than 12 in the tree (this is why it is leftmost).Slide8

What If Removed Node in

BST Has Two Children?

Rather than thinking of it as removing and rearranging nodes, think of it as copying and deleting the old node.

Copy 19’s data into 12’s spot.Slide9

What If Removed Node in

BST Has Two Children?

Lastly, remove that 19 that we copied.Slide10

How This Looks In Java

public

 

class

 

BinarySearchTree

{

      …

      

      public

 

boolean

 remove(

int

 value) {

            

if

 (root == 

null

)

                  

return

 

false

;

            else {                  if (root.getValue() == value) {                        BSTNode auxRoot = new BSTNode(0);                        auxRoot.setLeftChild(root);                        boolean result = root.remove(value, auxRoot);                        root = auxRoot.getLeft();                        return result;                  } else {                        return root.remove(value, null);                  }            }      }}

public

 

class

 

BSTNode

{

      …

      

public

 

boolean

 remove(

int

 value,

BSTNode

parent) {

            

if

 (value < 

this

.value

) {

                  

if

 (left != 

null

)

                        

return

 

left.remove

(value, 

this

);

                  

else

                        

return

 

false

;

            } 

else

 

if

 (value > 

this

.value

) {

                  

if

 (right != 

null

)

                        

return

 

right.remove

(value, 

this

);

                  

else

                        

return

 

false

;

            } 

else

 {

                  

if

 (left != 

null

 && right != 

null

) {

                        

this

.value

 = 

right.minValue

();

                        

right.remove

(

this

.value

this

);

                  } 

else

 

if

 (

parent.left

 == 

this

) {

                       

parent.left

 = (left != 

null

) ? left : right;

                  } 

else

 

if

 (

parent.right

 == 

this

) {

                       

parent.right

 = (left != 

null

) ? left : right;

                  }

                  

return

 

true

;

            }

      }

      public

 

int

 

minValue

() {

            

if

 (left == 

null

)

                  

return

 value;

            

else

                  

return

 

left.minValue

();

      }

}Slide11

Interactive Visualization

https://www.cs.usfca.edu/~galles/visualization/BST.html