牛牛喜欢玩布尔运算树。给定一个二叉树的根节点root,每个节点有以下属性: 叶节点的值为0或1,分别表示false和true。 非叶节点的值为2、3、4、5,分别表示布尔运算OR、AND、XOR、NOT。 你需要根据以下规则计算节点的评价: 如果节点是叶节点,则评价是节点的值,即true或false。 如果节点是非叶节点: 对左子节点进行评价得到leftEval。 对右子节点进行评价得到rightEval。 将节点的值的布尔运算应用于leftEval和rightEval,得到节点的评价。 牛牛可以用一个操作,将一个叶节点翻转,即false变为true,true变为false。 请你计算需要执行的最小操作数,以使根节点root的评价得到指定的结果result。 保证一定有解。 注意:NOT节点只有左孩子或只有右孩子,但其他非叶节点同时拥有左孩子和右孩子。
示例1

输入

{1},false

输出

1
示例2

输入

{2,1,1},false

输出

2

备注:
树中的节点数在[1, 10^5]范围内。0 OR、AND、XOR节点有2个子节点。NOT只有一个1子节点。叶节点的值为0或1。非叶节点的值为2, 3, 4, 5。
加载中...