复杂条件滤波器设计

时间:2015-06-15 16:15:07

标签: data-structures binary-tree decision-tree conditional

我坚持在后端的表单中实现一些条件规则。基本上我需要提出一种有效且可扩展的方法来实现这一目标。我正在研究这个二叉树和决策树,但仍然不确定实现它的最佳方法是什么。

enter image description here

正如您所看到的,有一个声明可能有多个条件由逻辑AND / OR分隔。基本上我需要知道的是将这些信息存储在数据库中的数据结构。当用户在通过过滤器时根据表单值提交表单时,它将充当过滤器。因此将执行某些操作。

1 个答案:

答案 0 :(得分:0)

你的问题有点普遍,但让我看看能否帮助你入门。在Java中,您可以按如下方式设置类结构:

interface ConditionTree {
    boolean evaluate(...);
}

class OperatorNode implements ConditionTree {
   List<ConditionTree> subTrees = ....;

   @Override
   boolean evaluate(...) {
      if(operator == AND) {
      //loop through and evaluate each sub tree and make sure they are all true,
      //or return false
      }
      else if(operator == OR) {
      //loop through and evaluate each sub tree, and make sure at least one is
      //true, or return false
      } 
   }
}

class LeafNode implements ConditionTree { 
    @Override
   boolean evaluate(...) {
      //get the LHS, operator, and RHS, and evaluate them   
   }

}

注意它是一棵N-ary树,而不是一棵二叉树。