首页 > 解决方案 > PrefixParsingTree 中的 calculate_value

问题描述

计算值()

返回一个整数,它是前缀解析树的根的计算值。

每个节点都有一个令牌,存储在一个字符串中。

叶子的标记是一个整数。

非叶节点的记号是运算符,加号(“+”)或减号(“-”)

树中每个非叶节点的计算值是将该节点的运算符应用于其两个子节点的计算值的结果。

叶子的计算值是令牌字符串中表示的数字的整数值。

这是我的代码

class PrefixParsingTreeNode:
    def __init__(self, token, left, right):
        self.token = token
        self.left = left
        self.right = right

class PrefixParsingTree:
    def __init__(self):
        self.root = None

    class Tokenizer:
        def __init__(self, str_statement):
            self.statement = str_statement
            self.position = 0

        def get_next_token(self):
            i = self.position
            while i < len(self.statement) and self.statement[i] != " ":
                i += 1
            ret_val = self.statement[self.position:i]
            self.position = i + 1
            return ret_val

    def build_tree_recursive(self, tokenizer):
        token = tokenizer.get_next_token()

        if token == "+" or token == "-":
            return PrefixParsingTreeNode(token, self.build_tree_recursive(tokenizer), self.build_tree_recursive(tokenizer))
        elif token.isdigit():
            return PrefixParsingTreeNode(token, None, None)
        else:
            return PrefixParsingTreeNode(token, None, None)

    def load_statement_string(self, statement):
        tokenizer = self.Tokenizer(statement)
        self.root = self.build_tree_recursive(tokenizer)
    
        
    def calculate_value(self):
        # IMPLEMENT THIS OPERATION
        # YOU CAN MAKE HELPER FUNCTIONS IN THE CLASS AS NEEDED
        pass

我将如何实现计算()函数

标签: pythontree

解决方案


推荐阅读