————————————————————————————————————————————
二叉树-------->递归
思路:将该树复制一份,每次比较两棵树需要比较的两个节点 r1, r2。
递归终止条件:
- 都为 null,返回 true
- 有一个为 null,返回 false
递归体:
返回这两个节点是否同时满足一下三个条件:
- r1.val = r2.val
- r1 的左子树和 r2 的右子树是对称关系
- r1 的右子树和 r2 的左子树是对称关系
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
return isMirror(root, root);
}
public boolean isMirror(TreeNode r1, TreeNode r2){
if(r1 == null && r2 == null) return true;
if(r1 == null || r2 == null) return false;
return r1.val == r2.val && isMirror(r1.left, r2.right) && isMirror(r1.right, r2.left);
}
}