Algorithm 将二叉树转换为后固定数学表达式的算法?

Algorithm 将二叉树转换为后固定数学表达式的算法?,algorithm,Algorithm,我有一个数学表达式的二叉树(中缀),我想直接将这棵树转换成后缀(堆栈) 有人能提出这个算法吗 简单,每个节点都是(左、右、数据) 从第一个节点开始。执行左子树的算法(如果可用),然后执行右子树的算法,然后打印数据 TreeNode = ([TreeNode], Data, [TreeNode]) TreeToPostfix: [TreeNode] -> Data* TreeToPostfix(nil) = [] TreeToPostfix((left, data, right)) ==

我有一个数学表达式的二叉树(中缀),我想直接将这棵树转换成后缀(堆栈) 有人能提出这个算法吗

简单,每个节点都是(左、右、数据)

从第一个节点开始。执行左子树的算法(如果可用),然后执行右子树的算法,然后打印数据

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-+

您正在搜索的内容称为邮政订单:


u plz能否解释该方法,因为在这种情况下,数据将始终处于treeData的低设置水平,即值和运算符。我的算法产生了前缀,但现在固定为后缀。
postorder(node)
  if node.left  ≠ null then postorder(node.left)
  if node.right ≠ null then postorder(node.right)
  print node.value