type Node = auto class data: T; left,right: Node; end; function CNode(x: T; l: Node := nil; r: Node := nil): Node := new Node(x,l,r); function Infix(root: Node): sequence of T; begin if root = nil then exit; yield sequence Infix(root.left); yield root.data; yield sequence Infix(root.right); end; begin var root := CNode(1,CNode(2,CNode(3),CNode(4)),CNode(5)); Infix(root).Print; end.