Write the pseudocode for the following procedures in BST and
Write the pseudocode for the following procedures in BST, and walk through the code with an example (at least 5 nodes in the tree).
Find minimum key.
Find kth smallest key.
Delete a node.
Solution
node:
int value
node leftChild=NULL
node rightChild=NULL
node parent=Null
bst:
node root
insert(n):
if(number of node == 0){
root.value=n
}
else{
node currentNode=root
while(true){
if(n<=currentNode.value && current.leftChild==NULL){
node temp
temp.value=n
temp.parent=currentNode
currentNode.leftChild=temp
break
}
else if(n<=currentNode.value){
currentNode=currentNode.leftChild
}
else if(currentNode.rightChild==Null){
node temp
temp.value=n
temp.parent=currentNode
currentNode.rightChild=temp
break
}
else{
currentNode=currentNode.rightChild
}
}
}
minimum:
node current
while(current.leftChild!=Null){
current=current.leftChild
}
return current.value
kth_smallest:
search(node x):
int n = x.value
node current=root
while(true){
if(n==current.value){
break
}
else if(n<current.value){
current=current.leftChild
}
else{
current=current.rightChild
}
}
return current
delete(node x):
node current=search(x)
if(current==root){
root.value=NULL
}
else if(current.leftChild==NULL || current.rightChild==NULL)
if(current.leftChild==NULL && current.rightChild==NULL){
if((current.parent).leftChild==x){
(current.parent).leftChild==NULL
}
else{
(current.parent).rightChild==NULL
}
}
else{
if(current.leftChild==NULL){
if((current.parent).leftChild==x){
(current.parent).leftChild=current.rightchild
}
else{
(current.parent).rightChild=current.rightChild
}
}
else{
if((current.parent).leftChild==x){
(current.parent).leftChild=current.leftChild
}
else{
(current.parent).rightChild=current.leftChild
}
}
}
else{
node temp=current.rightChild
while(temp.leftChild!=NULL){
temp=temp.leftChild
}
if((current.parent).leftChild==current){
(current.parent).leftChild=temp
temp.parent=current.parent
temp.leftChild = current.leftChild
temp.rightChild = current.righChild
}
else{
(current.parent).rightChild=temp
temp.parent=current.parent
temp.leftChild = current.leftChild
temp.rightChild = current.righChild
}
}
inorderTraversal(node x, int arr[]):
if(x==NULL){
return;
}
inorderTraversal(x.leftChild, arr)
arr.push(x.value)
inorderTraversal(x.rightChild,arr)
kth_smallest(k):
int arr[]
inorderTraversal(root,arr)
return arr[k-1]


