Skip to content

Instantly share code, notes, and snippets.

@LBBO
Created June 1, 2023 10:16
Show Gist options
  • Save LBBO/f233c097a5fa2d6396c1de0b96a002ef to your computer and use it in GitHub Desktop.
Save LBBO/f233c097a5fa2d6396c1de0b96a002ef to your computer and use it in GitHub Desktop.
OCaml BST visualization

Hilfe zum Debuggen von BSTs

Damit ihr besser versteht, was euer Code tut, könnt ihr hiermit verschiedene BSTs visualisieren.

Dazu habt ihr unten Code, der einen BST nimmt und ihn in einer Textdarstellung zur Konsole ausgibt. Die könnt ihr dann kopieren und in diesem Online-Tool einfügen, um den Baum graphisch dargestellt zu bekommen.

Um den Code nutzen zu können, müsst ihr ihn in die assignment.ml Datei kopieren und entweder die assignment.mli Datei löschen oder sie mit dem Code ganz unten ergänzen. Dann könnt ihr in utop einfach z.B.

Assignment.print_tree Assignment.t1;;

aufrufen.

(* Add this to your ml file after the inspect function *)
(*
Umgekehrte Funktionskonkatenation
f ||> g = fun x -> g (f x)
*)
let ( ||> ) f g x = g @@ f x
let string_of_tree =
let rec indented n t =
(* Converts leaf / node to string recursively, ignore indentation *)
(match inspect t with
| None -> "Leaf\n"
| Some (v, l, r) ->
string_of_int v
^ "\n"
^ indented (n + 1) l
^ indented (n + 1) r)
(* Then indent the string *)
|>
let indent =
String.init (n * 2)
@@ Fun.const ' '
in
( ^ ) indent
in
indented 0
(* Print a tree to stdout *)
let print_tree =
string_of_tree ||> print_string
val string_of_tree : tree -> string
val print_tree : tree -> unit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment