【DFS】LeetCode 951. 翻转等价二叉树
题目链接
思路
如果二叉树 root1
,root2
根节点值相等,那么只需要检查他们的孩子是不是相等就可以了。
- 如果
root1
或者root2
是null
,那么只有在他们都为null
的情况下这两个二叉树才等价。 - 如果
root1
,root2
的值不相等,那这两个二叉树的一定不等价。 - 如果以上条件都不满足,也就是当
root1
和root2
的值相等的情况下,需要继续判断root1
的孩子节点是不是跟root2
的孩子节点相当。因为可以做翻转操作,所以这里有两种情况需要去判断。
代码
class Solution {
public boolean flipEquiv(TreeNode root1, TreeNode root2) {
if(root1 == root2){
return true;
}
if(root1 == null || root2 == null || root1.val != root2.val){
return false;
}
return (flipEquiv(root1.left, root2.left) && flipEquiv(root1.right, root2.right) ||
flipEquiv(root1.left, root2.right) && flipEquiv(root1.right, root2.left));
}
}