解析布尔表达式并在C ++中创建二叉树

时间:2014-11-05 02:35:00

标签: c++ parsing binary-tree boolean-expression

我正在编写一个代码,它应解析一个布尔表达式并将其加载到二叉树中。 但是我对如何开始向树添加节点感到困惑。

如果我有一个表达式: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
    }
  }
}

我需要一些关于如何开始的指示,因为我以前从未这样做过。 插入函数的基本算法应该是什么样的?我没有在线找到任何类似的例子。

0 个答案:

没有答案