给定一个二叉树,检查它是否是镜像对称的。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val
* TreeNode left
* TreeNode right
* TreeNode() {}
* TreeNode(int val) { this.val = val
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val
* this.left = left
* this.right = right
* }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
return check(root,root)
}
public boolean check(TreeNode p,TreeNode q){
if(p == null && q == null){
return true
}
if(p == null || q == null){
return false
}
return p.val == q.val && check(p.left,q.right) && check(p.right,q.left)
}
}
//备注
主要是左右子树的遍历和对比,这边的遍历是传入同一棵树的根,别名p,q分别指向左右子树,进而再进行遍历
然后子树节点对比条件共有四个,详见代码