Skip to main content
Improved code formatting
Source Link

I am currently exploring OCaml and wrote the following implementation of deleting a node from a binary tree

let rec deleteNode tree' value = 
  match tree' with 
  | Empty -> Empty
  | Node(left, nodeValue, right) -> if value < nodeValue then
                          if value < nodeValue then
        Node((deleteNode left value), nodeValue, right)
                                    else if value > nodeValue then 
                                      Node(left, nodeValue, (deleteNode right value))
                                    else if left = Empty && right = Empty then 
                                      Empty
                                    else if left = Empty then 
                                      right
                                    else if right = Empty then
                                      left
                                    else 
                                      let newValue = minValue right in
                                      Node(left, newValue, (deleteNode right newValue))

Where my tree type is

type tree = 
  | Empty
  | Node of tree * int * tree

I am looking for a review of my code so that I can improve my OCaml and functional skills.

I am currently exploring OCaml and wrote the following implementation of deleting a node from a binary tree

let rec deleteNode tree' value = 
  match tree' with 
  | Empty -> Empty
  | Node(left, nodeValue, right) -> if value < nodeValue then
                                      Node((deleteNode left value), nodeValue, right)
                                    else if value > nodeValue then 
                                      Node(left, nodeValue, (deleteNode right value))
                                    else if left = Empty && right = Empty then 
                                      Empty
                                    else if left = Empty then 
                                      right
                                    else if right = Empty then
                                      left
                                    else 
                                      let newValue = minValue right in
                                      Node(left, newValue, (deleteNode right newValue))

Where my tree type is

type tree = 
  | Empty
  | Node of tree * int * tree

I am looking for a review of my code so that I can improve my OCaml and functional skills.

I am currently exploring OCaml and wrote the following implementation of deleting a node from a binary tree

let rec deleteNode tree' value = 
  match tree' with 
  | Empty -> Empty
  | Node(left, nodeValue, right) -> 
      if value < nodeValue then
        Node((deleteNode left value), nodeValue, right)
      else if value > nodeValue then 
        Node(left, nodeValue, (deleteNode right value))
      else if left = Empty && right = Empty then 
        Empty
      else if left = Empty then 
        right
      else if right = Empty then
        left
      else 
        let newValue = minValue right in
        Node(left, newValue, (deleteNode right newValue))

Where my tree type is

type tree = 
  | Empty
  | Node of tree * int * tree

I am looking for a review of my code so that I can improve my OCaml and functional skills.

Source Link

Deleting a node from Binary Tree in OCaml

I am currently exploring OCaml and wrote the following implementation of deleting a node from a binary tree

let rec deleteNode tree' value = 
  match tree' with 
  | Empty -> Empty
  | Node(left, nodeValue, right) -> if value < nodeValue then
                                      Node((deleteNode left value), nodeValue, right)
                                    else if value > nodeValue then 
                                      Node(left, nodeValue, (deleteNode right value))
                                    else if left = Empty && right = Empty then 
                                      Empty
                                    else if left = Empty then 
                                      right
                                    else if right = Empty then
                                      left
                                    else 
                                      let newValue = minValue right in
                                      Node(left, newValue, (deleteNode right newValue))

Where my tree type is

type tree = 
  | Empty
  | Node of tree * int * tree

I am looking for a review of my code so that I can improve my OCaml and functional skills.