假设一个仅包含二元运算符的算术表达式以链表形式存储在二叉树BT中写出计算算术
表达式的函数,利用二叉树进行运算。
假设二叉树的节点定义如下:
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
可以使用递归的方法计算算术表达式。定义一个函数evaluate_expression,传入二叉树的根节点,计算并返回表达式的结果。
def evaluate_expression(root):
# 如果根节点为空,则返回0
if root is None:
return 0
# 如果根节点为叶子节点,则返回该节点的值
if root.left is None and root.right is None:
return int(root.value)
# 递归计算左子树和右子树的结果
left_result = evaluate_expression(root.left)
right_result = evaluate_expression(root.right)
# 根据根节点的值进行对应的运算
if root.value == '+':
return left_result + right_result
elif root.value == '-':
return left_result - right_result
elif root.value == '*':
return left_result * right_result
elif root.value == '/':
return left_result / right_result
else:
raise ValueError('Invalid operator')
通过上述代码,可以计算二叉树存储的算术表达式的结果。例如,假设有以下算术表达式的二叉树表示:
+
/ \
* -
/ \ / \
5 4 6 2
可以用以下代码计算该表达式的结果:
# 构建二叉树
root = Node('+')
root.left = Node('*')
root.right = Node('-')
root.left.left = Node('5')
root.left.right = Node('4')
root.right.left = Node('6')
root.right.right = Node('2')
# 计算表达式的结果
result = evaluate_expression(root)
print(result) # 输出: 17
``
原文地址: http://www.cveoy.top/t/topic/hCaq 著作权归作者所有。请勿转载和采集!