二叉树数值表达式

it2025-11-12  10

Arithmetic Binary Tree

二叉树数值表达式

问题描述 给定一个二叉树,这个二叉树对应一个有效的数值表达式。树的每一个叶子结点都是一个整数,非叶子结点都是加 + 减 - 乘 * 除 \ 这几个运算符之一。算法返回表达式计算的结果。

测试样例

# Input: * / \ + + / \ / \ 3 2 4 5 # Output: 45 # 该表达式为 (3 + 2) * (4 + 5) = 45

内容首发于微信公众号IT信息教室,如果您想学习更多AI相关的技能,欢迎搜索关注或微信扫描下方二维码关注~~

参考代码

#!/usr/bin/env python3 # -*- coding: utf-8 -*- class Node: def __init__(self, value): self.value = value self.left = None self.right = None # Type of operations PLUS = '+' MINUS = '-' TIMES = '*' DIVIDE = '/' # Main function # O(N) time, O(log(n)) space # 这是一个简单的递归,对于遍历到的任意个结点 # 如果结点值是运算符,那么递归调用主函数分别判断其左右子树 # 如果结点值是数值,那么就返回该值 def evaluate(root): if root.value == PLUS: return evaluate(root.left) + evaluate(root.right) elif root.value == MINUS: return evaluate(root.left) + evaluate(root.right) elif root.value == TIMES: return evaluate(root.left) * evaluate(root.right) elif root.value == DIVIDE: return evaluate(root.left) / evaluate(root.right) else: return root.value # Test Program tree = Node(TIMES) tree.left = Node(PLUS) tree.right = Node(PLUS) tree.left.left = Node(3) tree.left.right = Node(2) tree.right.left = Node(4) tree.right.right = Node(5) result = evaluate(tree) print(result) # 45 # 二叉树对应的表达式为 (3 + 2) * (4 + 5) = 45
最新回复(0)