Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let rec findInOrderPredecessor (tree : Tree<'a>) =
- match tree with
- | Empty -> Empty
- | Branch (_, _, Empty) -> tree
- | Branch (_, _, right) -> findInOrderPredecessor right
- let rec delete value (tree : Tree<'a>) =
- match tree with
- | Empty -> Empty
- | Branch (value', left, right) when value < value' ->
- let left' = delete value left
- Branch (value', left', right)
- | Branch (value', left, right) when value > value' ->
- let right' = delete value right
- Branch (value', left, right')
- | Branch (_, Empty, Empty) ->
- Empty
- | Branch (_, left, Empty) ->
- left
- | Branch (_, Empty, right) ->
- right
- | Branch (_, left, right) ->
- let (Branch(value', _, _)) = findInOrderPredecessor left
- let left' = delete value' left
- Branch (value', left', right)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement