我正在编写一个代码,它应解析一个布尔表达式并将其加载到二叉树中。 但是我对如何开始向树添加节点感到困惑。
如果我有一个表达式:a AND b OR 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
}
}
}
我需要一些关于如何开始的指示,因为我以前从未这样做过。 插入函数的基本算法应该是什么样的?我没有在线找到任何类似的例子。