基于二叉树的表达式求值算法代码
时间: 2024-06-05 14:04:44 浏览: 127
利用二叉树求表达式值
基于二叉树的表达式求值算法,可以分为以下几个步骤:
1. 通过中缀表达式构建二叉树
2. 对二叉树进行后序遍历
3. 在后序遍历的过程中,对于每个运算符节点,将其左右子节点的值进行运算,得到结果并存储在该节点中
4. 最终返回根节点的值
以下是基于二叉树的表达式求值算法的代码实现:
```python
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def buildTree(s):
if not s:
return None
stack = []
root = None
for c in s:
if c.isdigit():
node = Node(int(c))
if not root:
root = node
else:
parent = stack[-1]
if not parent.left:
parent.left = node
else:
parent.right = node
stack.pop()
stack.append(node)
elif c == '(':
continue
elif c in ['+', '-', '*', '/']:
node = Node(c)
stack.append(node)
return root
def evaluate(root):
if not root:
return 0
left_val = evaluate(root.left)
right_val = evaluate(root.right)
if root.val == '+':
root.val = left_val + right_val
elif root.val == '-':
root.val = left_val - right_val
elif root.val == '*':
root.val = left_val * right_val
elif root.val == '/':
root.val = left_val / right_val
return root.val
expression = "(3+2)*5-6/2"
root = buildTree(expression)
result = evaluate(root)
print(result)
```
阅读全文