Tree/2313.Minimum-Flips-in-Binary-Tree-to-Get-Result/Readme.md
本题只要想到用tree dp来做,一切就迎刃而解。我们定义dfs(node, expected)表示为使得子树eval(node)的结果等于expected,所需要所做的最小修改。然后我们根据node的运算符和expcted的数值,分情况讨论:
dfs(node->left, 1)或者dfs(node->right, 1)中的较小值.dfs(node->left, 0)+dfs(node->right, 0).dfs(node->left, 1)+dfs(node->right, 1).dfs(node->left, 0)或者dfs(node->right, 0)中的较小值.dfs(node->left, 0)+dfs(node->right, 1)或者dfs(node->left, 1)+dfs(node->right, 0)中的较小值.dfs(node->left, 0)+dfs(node->right, 0)或者dfs(node->left, 1)+dfs(node->right, 1)中的较小值.dfs(child, 0),其中child是node的唯一子树(左子树或者右子树)dfs(child, 1)node->val != expected记得所有的结果需要记忆化,加快访问。