Разбор логического выражения и создание двоичного дерева в переполнении стека

Я работаю над кодом, который должен анализировать логическое выражение и загружать его в двоичное дерево.
Однако я не совсем понимаю, как мне начать добавлять узел в дерево.

Если у меня есть выражение вроде: a AND b или C, тогда я должен получить следующее дерево:

      AND

a        OR

b      c

Я нашел следующий пример, который объясняет, как создать двоичное дерево, но не уверен, как я могу изменить это для работы с логическим выражением.

class btree
{
public:
btree();
~btree();

void insert(int key);
node *search(int key);
void destroy_tree();

private:
void destroy_tree(node *leaf);
void insert(int key, node *leaf);
node *search(int key, node *leaf);

node *root;
};

void btree::insert(int key)
{
if(root!=NULL)
insert(key, root);
else
{
root=new node;
root->key_value=key;
root->left=NULL;
root->right=NULL;
}
}
void btree::insert(int key, node *leaf)
{
if(key< leaf->key_value)
{
if(leaf->left!=NULL)
insert(key, leaf->left);
else
{
leaf->left=new node;
leaf->left->key_value=key;
leaf->left->left=NULL;    //Sets the left child of the child node to null
leaf->left->right=NULL;   //Sets the right child of the child node to null
}
}
else if(key>=leaf->key_value)
{
if(leaf->right!=NULL)
insert(key, leaf->right);
else
{
leaf->right=new node;
leaf->right->key_value=key;
leaf->right->left=NULL;  //Sets the left child of the child node to null
leaf->right->right=NULL; //Sets the right child of the child node to null
}
}
}

Мне нужно несколько советов о том, как начать, так как я никогда не делал этого раньше.
Как должен выглядеть базовый алгоритм для функции вставки? Я не нашел подобных примеров в сети.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector