【发布时间】:2021-09-04 10:21:20
【问题描述】:
我正在尝试在 Python 中找到一个解决方案来尝试将预订符号(例如“* + 7 3 - 2 9”或“+ 55 26”)移动到后符号或反向波兰符号。预期的结果是例如分别为“7 3 + 2 9 - *”和“55 26 +”。我对二叉树做了一些研究,但是我正在努力使用数学函数。我目前拥有的是以下内容:
class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data
检查运算符的功能
def isOperator(self, c):
return c == '+' or c == '-' or c == '*' or c == '/'
插入节点
def insert(self, data):
if self.data:
if data < self.data:
if self.left is None:
self.left = Node(data)
else:
self.left.insert(data)
elif data > self.data:
if self.right is None:
self.right = Node(data)
else:
self.right.insert(data)
else:
self.data = data
打印树
def PrintTree(self):
if self.left:
self.left.PrintTree()
print( self.data),
if self.right:
self.right.PrintTree()
预购遍历
根 -> 左 -> 右
def PreorderTraversal(self, root):
res = []
if root:
res.append(root.data)
res = res + self.PreorderTraversal(root.left)
res = res + self.PreorderTraversal(root.right)
return res
后序遍历
左 -> 右 -> 根
def PostorderTraversal(self, root):
res = []
if root:
res = self.PostorderTraversal(root.left)
res = res + self.PostorderTraversal(root.right)
res.append(root.data)
return res
对于完成此代码的任何帮助将不胜感激,因为我无法弄清楚这一点。
提前谢谢你
【问题讨论】:
-
你只有
Node类,这些方法都是Node类的吗?与其发布少量的 sn-ps 代码,不如拥有一个代码块,这样我们就可以看到确切的上下文,并推导出self是什么(例如)。
标签: python-3.x algorithm binary-tree