比如说表达式“-1+2/sin(3+4-5)**((6-7*8)/9)+9*8%7/6*5*exp(4+3)//2-1”经过tokens分割后得到
[('-', 'O'), ('1', 'N'), ('+', 'O'), ('2', 'N'), ('/', 'O'), ('sin', 'F'), ('(', 'B'), ('3', 'N'), ('+', 'O'), ('4', 'N'), ('-', 'O'), ('5', 'N'), (')', 'B'), ('**', 'O'), ('(', 'B'), ('(', 'B'), ('6', 'N'), ('-', 'O'), ('7', 'N'), ('*', 'O'), ('8', 'N'), (')', 'B'), ('/', 'O'), ('9', 'N'), (')', 'B'), ('+', 'O'), ('9', 'N'), ('*', 'O'), ('8', 'N'), ('%', 'O'), ('7', 'N'), ('/', 'O'), ('6', 'N'), ('*', 'O'), ('5', 'N'), ('*', 'O'), ('exp', 'F'), ('(', 'B'), ('4', 'N'), ('+', 'O'), ('3', 'N'), (')', 'B'), ('//', 'O'), ('2', 'N'), ('-', 'O'), ('1', 'N')]
这里的元组中前面表示token内容,后面表示token类型,定义:
bracket = "B"
function = "F"
number = "N"
operator = "O"
variable = "V"
然后根据这个列表如何构建二叉树?
[('-', 'O'), ('1', 'N'), ('+', 'O'), ('2', 'N'), ('/', 'O'), ('sin', 'F'), ('(', 'B'), ('3', 'N'), ('+', 'O'), ('4', 'N'), ('-', 'O'), ('5', 'N'), (')', 'B'), ('**', 'O'), ('(', 'B'), ('(', 'B'), ('6', 'N'), ('-', 'O'), ('7', 'N'), ('*', 'O'), ('8', 'N'), (')', 'B'), ('/', 'O'), ('9', 'N'), (')', 'B'), ('+', 'O'), ('9', 'N'), ('*', 'O'), ('8', 'N'), ('%', 'O'), ('7', 'N'), ('/', 'O'), ('6', 'N'), ('*', 'O'), ('5', 'N'), ('*', 'O'), ('exp', 'F'), ('(', 'B'), ('4', 'N'), ('+', 'O'), ('3', 'N'), (')', 'B'), ('//', 'O'), ('2', 'N'), ('-', 'O'), ('1', 'N')]
这里的元组中前面表示token内容,后面表示token类型,定义:
bracket = "B"
function = "F"
number = "N"
operator = "O"
variable = "V"
然后根据这个列表如何构建二叉树?



