type Node = auto class data: T; left,right: Node; end; function CreateTree(n: integer): Node; begin if n = 0 then Result := nil else Result := new Node( Random(100), CreateTree((n-1) div 2), CreateTree(n-1 - (n-1) div 2) ); end; procedure InfixTraverse(root: Node; act: T -> ()); begin if root = nil then exit; InfixTraverse(root.left,act); act(root.data); InfixTraverse(root.right,act); end; begin var tree := CreateTree(10); Println(tree); InfixTraverse(tree, x -> Print(x)); end.