【问题标题】:Creating an expression tree for prefix expression为前缀表达式创建表达式树
【发布时间】:2017-11-05 17:53:14
【问题描述】:

我想以前缀表示法为给定的表达式字符串创建一个表达式树(例如,调用将是 create_expression_tree("+ * 2 6 / 3") 。示例输出:

这是我迄今为止所做的工作:

def create_expression_tree(prefix_exp_str, start_pos):
    print(start_pos)
    start_pos += 1
    op = ["+", "-", "*", "/"]
    element = prefix_exp_str[start_pos]
    if element == " ":
        element = prefix_exp_str[start_pos + 1]
        start_pos += 1
    if element not in op:
        return (LinkedBinaryTree.Node(int(element)), start_pos)
    else:
        left = create_expression_tree(prefix_exp_str, start_pos)
        right = create_expression_tree(prefix_exp_str, left[1])
        return LinkedBinaryTree(LinkedBinaryTree.Node(element, left[0], right[0]))

    a = create_expression_tree("* 2 + - 15 6 4", -1)

这种方法不起作用,因为节点放置不正确。我想避免使用堆栈,因为我想要一个纯粹的递归实现。

仅供参考:这不是重复的。我查看了其他答案,并尝试实施它们,但导致相同的错误。

【问题讨论】:

    标签: tree binary-tree binary-search-tree


    【解决方案1】:

    您将 prefix_exp_str[1:] 传递给两个递归调用。相反,第二个递归调用需要在第一个递归调用完成后接收输入字符串的剩余部分。

    【讨论】:

      猜你喜欢
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 2017-02-10
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多