【发布时间】: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