// version 1.0.6 class BinaryTree(var value: T) { var left : BinaryTree? = null var right: BinaryTree? = null fun map(f: (T) -> U): BinaryTree { val tree = BinaryTree(f(value)) if (left != null) tree.left = left?.map(f) if (right != null) tree.right = right?.map(f) return tree } fun showTopThree() = "(${left?.value}, $value, ${right?.value})" } fun main(args: Array) { val b = BinaryTree(6) b.left = BinaryTree(5) b.right = BinaryTree(7) println(b.showTopThree()) val b2 = b.map { it * 10.0 } println(b2.showTopThree()) }