最近,由于这个表达式((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
我不知道表达式树是如何工作的。