我有一个类似字符串的字符串
s="(=> P (OR (AND A (NOT B)) (AND B (NOT A))))";
并将其转换为输出此字符串的 CNF,例如
(或(非 P)(或 AB))(或(非 P)(或(非 B)(非 A)))
我需要制作一个结构 TreeNode 来保持价值吗?
struct TreeNode {
string val; // The data in this node.
TreeNode *left; // Pointer to the left subtree.
TreeNode *right; // Pointer to the right subtree.
//TreeNode *farther;//should I use farther or not in convert to CNF?
};
如何使其成为合取范式的CNF?请给出一些算法细节。从我的角度来看,也许使用递归函数更好地解决这个问题,但我仍然想不出如何使用递归。或者您有其他解决此问题的建议?