Advertisement
Guest User

Untitled

a guest
Aug 21st, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. let rec updateTree index newElement tree size = match tree with
  2. | Leaf element -> Leaf newElement
  3. | Node {element; left; right} ->
  4. let newSize = ((size + 1) / 2) - 1 in
  5. if index == 0 then Node {element = newElement; left; right}
  6. else if index <= newSize then
  7. Node {
  8. element;
  9. left = updateTree (index - 1) newElement left newSize;
  10. right;
  11. }
  12. else
  13. Node {
  14. element;
  15. left;
  16. right = updateTree (index - newSize - 1) newElement right newSize;
  17. }
  18. ;;
  19.  
  20. let rec update index element ls = match ls with
  21. | [] -> raise IndexOutOfBoundsException
  22. | {size; tree} :: rest -> if index < size
  23. then {size; tree = updateTree index element tree size} :: rest
  24. else {size; tree} :: (update (index - size) element rest)
  25. ;;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement