首页 > 解决方案 > 打字问题

问题描述

嗨,我有二叉树和 2 个函数可以与他一起操作,但是当我运行 mypy --disallow-any-explicit --strict 时,我总是遇到不知道如何修复的错误

class Tree:
    def __init__(self, value: str,
                 left: Optional['Tree'] = None,
                 right: Optional['Tree'] = None):
        self.value = value
        self.left = left
        self.right = right

def to_rpn(tree: Tree) -> str:
    result = ""
    if tree.value != "+" and tree.value != "*":
        return result + tree.value
    return result + (to_rpn(tree.left) + " ") + (to_rpn(tree.right) + " ") + tree.value #*

def evaluate(tree: Tree) -> int:
    if tree.value == "+":
        return int(evaluate(tree.left)) + int(evaluate(tree.right)) #*
    elif tree.value == "*":
        return int(evaluate(tree.left)) * int(evaluate(tree.right)) #*
    else:
        return int(tree.value)

我将非常感谢任何帮助,因为我花了最后 2 个小时试图解决它。谢谢!

标签: pythonrecursion

解决方案


您用 表示空树None,因此您的函数也必须接受一个Optional[Tree]参数。

def to_rpn(tree: Optional[Tree]) -> str:
    ...

def evaluate(tree: Optional[Tree]) -> int:
    ...

推荐阅读