Python 代码实现将表达式 (A and (B or C)) or (D or (E and F)) 构建成二叉树
class Node: def init(self, val): self.val = val self.left = None self.right = None
def construct_tree(expression): stack = [] for char in expression: if char.isalpha(): node = Node(char) stack.append(node) elif char == ' ': continue else: if char == 'and': right = stack.pop() left = stack.pop() node = Node(char) node.left = left node.right = right stack.append(node) elif char == 'or': right = stack.pop() left = stack.pop() node = Node(char) node.left = left node.right = right stack.append(node) elif char == '(': continue elif char == ')': continue return stack.pop()
expression = '(A and (B or C)) or (D or (E and F))' root = construct_tree(expression) print(root.val) # or print(root.left.val) # and print(root.right.val) # or print(root.left.left.val) # A print(root.left.right.val) # or print(root.left.right.left.val) # B print(root.left.right.right.val) # C print(root.right.left.val) # D print(root.right.right.val) # and print(root.right.right.left.val) # E print(root.right.right.right.val) # F
原文地址: http://www.cveoy.top/t/topic/nJaJ 著作权归作者所有。请勿转载和采集!