表达式的函数,利用二叉树进行运算。

假设二叉树的节点定义如下:

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
``
假设一个仅包含二元运算符的算术表达式以链表形式存储在二叉树BT中写出计算算术

原文地址: http://www.cveoy.top/t/topic/hCaq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录