給定一個二叉樹,檢查它是否是鏡像對稱的。
例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面這個 [1,2,2,null,3,null,3] 則不是鏡像對稱的:
1
/ \
2 2
\ \
3 3
說明:
如果你可以運用遞歸和迭代兩種方法解決這個問題,會很加分。
思路: 1)root節點為空,返回true 。 2)root節點左右為鏡像,為true,否則返回false 。 3)左右值是否相等,左左跟右右是否相等,左右跟右左是否相等
class Solution {
public boolean isSymmetric(TreeNode root) {
// if(root == null){
// return true;
// }else{
// return isSymmetric(root.left,root.right);
// }
return isSymmetric(root,root);
}
boolean isSymmetric(TreeNode left,TreeNode right){
if(left == null && right == null){
return true;
}
else if(left == null || right == null){
return false;
}
return left.val == right.val && isSymmetric(left.left,right.right) && isSymmetric(left.right,right.left);
}
}