Как я могу добавить "(" и ")" в моем дереве представляет полностью инфиксное выражение, заключенное в скобки, которые в конечном итоге (следующее назначение) будут дифференцированы - PullRequest
0 голосов
/ 26 марта 2019

В следующем коде, который я даю, каждый раз будет выводиться ")".

Ввод:

((A+B)*((C-D)/(E^F)))

Ожидаемый вывод:

((A+B)*((C-D)/(E^F)))
A+B*C-D/E^F

мой вывод:

)

Мой код:

class Et:
  def __init__(self , value):
        self.value = value
        self.left = None
        self.right = None
  def isOperator(c):
    if (c == '+' or c == '-' or c == '*' or c == '/' or c == '^' ):
        return True
    else:
        return False
  def inorder(t):
    if t is not None:
        inorder(t.left)
        print (t.value)
        inorder(t.right)
  def constructTree(postfix):
    stack = []
    for char in postfix :
        if not isOperator(char):
            t = Et(char)
            stack.append(t)
        else:
            t = Et(char)
            t1 = stack.pop()
            t2 = stack.pop()
            t.right = t1
            t.left = t2
            stack.append(t)
    t = stack.pop()
    return t
postfix = "((A+B)*((C-D)/(E^F)))"
r = constructTree(postfix)
inorder(r)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...