表达式转二叉树 Python 代码实现 - 栈结构构建
这段代码使用 Python 语言实现了将表达式转换为二叉树的功能。
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def build_tree(expression):
stack = []
for char in expression:
if char.isdigit():
node = Node(char)
stack.append(node)
else:
right_node = stack.pop()
left_node = stack.pop()
node = Node(char)
node.left = left_node
node.right = right_node
stack.append(node)
return stack.pop()
代码首先定义了一个名为 Node 的类,用于表示二叉树中的节点。每个节点包含一个 value 属性,表示节点的值,以及两个 left 和 right 属性,分别指向该节点的左子节点和右子节点。
build_tree 函数接收一个表达式作为输入,并使用一个栈来存储构建的节点。函数遍历表达式中的每个字符,如果字符是数字,则创建一个新的节点并将其压入栈中;如果字符是操作符,则从栈中弹出两个节点,分别作为新节点的左子节点和右子节点,并创建一个新的节点将其压入栈中。最后,栈中剩下的唯一一个节点即为整个二叉树的根节点,将该节点弹出并返回即可。
这段代码充分利用了栈的先进后出特性,方便地构建二叉树的节点关系。需要注意的是,这段代码仅处理简单的表达式,例如 1+2*3,如果要处理更复杂的表达式,需要对代码进行修改。
原文地址: http://www.cveoy.top/t/topic/nJaw 著作权归作者所有。请勿转载和采集!