Легко, каждый узел (Левый, Правый, Данные).
Начните с первого узла. выполнить алгоритм для левого поддерева, если оно доступно, а затем выполнить алгоритм для правого поддерева и затем распечатать данные.
TreeNode = ([TreeNode], Data, [TreeNode])
TreeToPostfix: [TreeNode] -> Data*
TreeToPostfix(nil) = []
TreeToPostfix((left, data, right)) ==
TreeToPostfix(left) ++ TreeToPostfix(right) ++ Data
Например:
+
/ \
* -
/ \ / \
2 3 4 5
Производит: 2 3 * 4 5 - +