Вставьте математическое уравнение в двоичное дерево в C - PullRequest
0 голосов
/ 04 ноября 2018

Мне было интересно, как будет работать вставка уравнения, такого как 5 * 4 + 2 / 3, в двоичное дерево. Я пытался сделать это самостоятельно, но я могу заставить дерево расти только в одну сторону.

1 Ответ

0 голосов
/ 04 ноября 2018

Я не эксперт в этой области, но в прошлом я писал базовые парсеры выражений.

  1. Вам понадобится tokenize ваше выражение. Преобразуйте его из строки символов в list понятных кусков.

  2. Возможно, вы захотите создать две структуры, одну для операторов и одну для операндов. Подсказка, операторы имеют приоритет, связанный с ними.

  3. Вы можете применить алгоритм для преобразования ваших операторов / операндов в abstract syntax tree (AST). По сути, это просто набор правил, обычно используемых с очередью и стеком.

...