Write a R program for quick sort implementation, binary search tree.

a.Quick sort

quickSort<- function(arr) {
random_index<- sample(seq_along(arr), 1); pivot <- arr[random_index]
arr<- arr[-random_index]
left <- c()
right <- c()
left<-arr[which(arr<= pivot)]
right<-arr[which(arr> pivot)]
if (length(left) > 1)
{
left <- quickSort(left)
}
if (length(right) > 1)
right <- quickSort(right)
}
return(c(left, pivot, right))
}
arr<- sample(1:100, 10)
print("before sorting")
print(arr)
result <- quickSort(arr)
print("after sorting")
print(result)

b.Binary search tree
library(R6)
Node <- R6Class(
classname = 'Node',
public = list(
val = NULL,
left = NULL,
right = NULL,
initialize = function(val = NULL, left = NULL, right = NULL){
selfSval <- val
selfSleft <- left
selfSright <- right
}
BST <-R6Class(
classname = 'BST',
public = list(
root = NULL,
#node = NULL,
node=NULL,
insert = function(data) {
if(is.null(self$root)) {
selfSnode <- NodeSnew(data)
}else{
selfSinsert_recur(data, selfSroot)
}
insert_recur = function(data, cur_node){
if(data cur_node$val) {
if(is.null(cur_node$self)){
cur_node$left <- Node$new(data)
}else{
insert_recur(data, cur_node$left)
}else if(data > cur_node$val) {
if(is.null(cur_node$self)){
cur_nodeSright <- Node$new(data)
}else{
insert_recur(data, cur_nodeSright)
}
}else{
print('value already in tree')
}.
get_height = function(cur_node){
if(is.null(cur_node$val)){
return(-1)
}else{
return(max(selfSget_height(cur_node$left), selfSget_height(cur_node$right))+1)
)
)
print(bst <- BST$new())
print(bst$insert(3))
print(bst$insert(2))
print(bstSinsert(1))
print(bst$insert(5))
print(bst$insert(6))
print(bst$get_height(bst$root))
print(bst$get_height(bst$rootSright))
print(bstSroot)
print(bst$rootSleft)
print(bst$rootSright)
print(bst$rootSleft$left)
print(bst$rootSleft$right)