Мне было интересно, как будет работать вставка уравнения, такого как 5 * 4 + 2 / 3, в двоичное дерево. Я пытался сделать это самостоятельно, но я могу заставить дерево расти только в одну сторону.
5 * 4 + 2 / 3
Я не эксперт в этой области, но в прошлом я писал базовые парсеры выражений.
Вам понадобится tokenize ваше выражение. Преобразуйте его из строки символов в list понятных кусков.
tokenize
list
Возможно, вы захотите создать две структуры, одну для операторов и одну для операндов. Подсказка, операторы имеют приоритет, связанный с ними.
Вы можете применить алгоритм для преобразования ваших операторов / операндов в abstract syntax tree (AST). По сути, это просто набор правил, обычно используемых с очередью и стеком.
abstract syntax tree