import "io" import "heap" manifest { node_data = 0, node_left = 1, node_right = 2, node_size = 3 } let new_node(d) be { let r = newvec(node_size); r ! node_data := d; r ! node_left := nil; r ! node_right := nil; resultis r } let print(t) be { if t = nil then return; print(t ! node_left); out("%d ", t ! node_data); print(t ! node_right) } let insert(v, t) be { test t = nil then t := new_node(v) else test v < t ! node_data then t ! node_left := insert(v, t ! node_left) else t ! node_right := insert(v, t ! node_right); resultis t } let start() be { let root = nil, v; init(); for i = 0 to 19 do { v := random(100); out("%d ", v); root := insert(v, root) } out("\n"); print(root); out("\n") }