从值的 ArrayList 构建布尔逻辑树

Building a Boolean Logic Tree from an ArrayList of values

[[{key:'categoryL2',value:'Screws'}, {key:'categoryL2',value:'Bolts'}], [{key:'categoryL3' : 'Nuts'}]

这表示为 List<List<Key,Value>>,逻辑上为:

如果类别 L2 是螺钉和螺栓或类别 L3 是螺母 return 正确。

有没有办法在可以遍历的布尔逻辑树中正确表示它?

示例结构:

[
    OR :
        [
            AND : 
                {"key":"categoryL2","value":"Screws"},
                {"key":"categoryL2","value":"Bolts"},
                {"key":"categoryL2","value":"Wires"}
        ],
        [
            {"key":"categoryL3","value":"Nuts"}
        ],
        [
            {"key":"categoryL4"}
        ]   
]

我认为可行的与或树解决方案草图:

与或树解决方案草图:

实施知道包括反向引用,这将帮助您从任何子节点识别父节点