Мне поручено создать программу, которая превращает что-то вроде ((X+3)*(X+4))
в двоичное дерево, наряду с некоторыми другими функциями. До сих пор я взял входные данные и разбил их на два стека: один содержит операнды, другой - операторы.
На данный момент я определил стеки просто (поэтому они имеют только следующий узел и char value
.
Однако у меня, похоже, возникают проблемы с добавлением значений из стеков в мое дерево (поэтому, вероятно, проблема в определении дерева).
Мой стек определен следующим образом:
typedef struct node
{
char value;
struct node * nextnode;
} node;
Мое дерево определено:
typedef struct tree
{
node * thisNode;
struct tree *right, *left;
} tree;
Я не уверен насчет узла *, возможно, это должно быть что-то другое.
Я рассматривал простой случай 2 + 3 для начинающих. В этом случае корень дерева должен быть +, где слева будет 2, а справа - 3.
+
/\
2 3
Как добавить что-то, находящееся в стеке, в мое дерево? Я пытался использовать
root->thisNode = operatorTop;
Где operatorTop - вершина стека операторов (определяется как node * operatorTop
),
но даже эта простая строчка, похоже, не соответствует действительности.