ways = [] for i in range(len(input)): c =input[i] if c in"-*+": left = diffWaysToCompute(input[:i]) right = diffWaysToCompute(input[i+1:]) for l in left: for r in right: if c == '-': ways.append(l - r) elif c == '+': ways.append(l + r) else: ways.append(l * r) ifnot ways: ways.append(int(input)) return ways
defgenerateSubTree(s, e): ways = [] if s > e: ways.append(None) return ways for i in range(s, e+1): leftSubTrees = generateSubTree(s, i-1) rightSubTrees = generateSubTree(i + 1, e) for l in leftSubTrees: for r in rightSubTrees: root = TreeNode(i) root.left = l root.right = r ways.append(root) return ways