表达式树C#用于计算逻辑等价

时间:2016-09-13 05:07:37

标签: c# algorithm data-structures

最近,由于这个表达式((a | b)^ c),我编写了一个用于构造表达式树的递归函数。但这不是问题,问题是什么时候评估它,因为表达式的最后一个树是以下一个形式给出的:

                         ^
                       /   \
                      |     c
                     / \
                    a   b

问题是时候用它来评估它是否适用相应的逻辑等价(在这种情况下,分配法)。我尝试使用这个算法来评估树,就好像它是一个算术表达式树:

evaluate(node) {
     if(node has children){
          left_val = evaluate(node->left);
          right_val = evaluate(node->right);

          // find operation symbol for node and use it as
          // val = left_val operation right_val

          return val;
     }
     else {
          return node_value;
     }
}

但它根本没有成功,因为我无法将这些价值观以分配法的形式加入。结果,我决定寻找一种更好的方法,突然在C#上遇到了表达树的这种方法但是,我不确定它是否可能;如果可能的话,我怎样才能使用它来获取这些表达式:

a^c 
b^c

我不知道表达式树是如何工作的。

0 个答案:

没有答案