Tree Deletion • The level of complexity in performing the delete operation depends on the position of the node to be deleted in the tree. • It is by far more difficult to delete a node having two subtrees than to delete a leaf • There are three cases of deleting a node from the binary search tree.
Tree Deletion 1. The node is leaf; The appropriate pointer of its parent is set to null and the node is disposed of by delete. 15
15 4 1
20 16
Delete node
node
4 1
20 16
Free the space
Tree Deletion 2. The node has one child The parent’s pointer to the node is reset to point to the node’s child. In this way, the node’s children are lifted up by one level and all great-great-…grandchildren lose one “great” from their kinship designations. 15 15 4 1
Delete node 20
16
4
20
node 1
16
Free the space
Tree Deletion 3. The node has two children. In this case, no one-step operation can be performed since the parent’s right or left pointer cannot point to both node’s children at the same time.
Tree Deletion-Driver int main( ) { BST b1; int d,x; BTNode * Temp; for(int i=0;i<10;i++) b1.InsertRKey(((i+1)*7)%10, b1.RRoot()); cout<<"\n\n\t\t The Inorder traversal is\n "; b1.Inorder(b1.RRoot()); b1.DeleteaNode(b1.FindKey(8,b1.RRoot())); cout<<"\n\n\t\t The New Inorder traversal is\n "; b1.Inorder(b1.RRoot()); return 0; }
Lecture_8 Binary Search Tree Deletion-studywing.blogspot.com.pdf ...
There was a problem previewing this document. Retrying... Download. Connect more apps... Try one of the apps below to open or edit this item. Lecture_8 ...