LeetCode:对称二叉树
一、题目描述:
给你一个二叉树的根节点 root , 检查它是否轴对称。
二、题目分析
题目:对称二叉树
1、p 指针和 q 指针一开始都指向这棵树的根
2、随后 p 右移时,q 左移,p 左移时,q 右移
3、每次检查当前 p 和 q 节点的值是否相等,如果相等再判断左右子树是否对称。
即 p.val = q.val; p.left = q.right; p.right = q.left;
/**
* 题目:对称二叉树
* 1、p 指针和 q 指针一开始都指向这棵树的根
* 2、随后 p 右移时,q 左移,p 左移时,q 右移
* 3、每次检查当前 p 和 q 节点的值是否相等,如果相等再判断左右子树是否对称。
* 即 p.val = q.val; p.left = q.right; p.right = q.left;
*/
public class Deal2 {
public boolean isSymmetric(TreeNode root) {
return check(root, root);
}
public boolean check(TreeNode p, TreeNode q) {
//注意:此处是 && 时 , 为true
if (p == null && q == null) {
return true;
}
//注意:此处是 || 时 , 为false
if (p == null || q == null) {
return false;
}
return p.val == q.val && check(p.left, q.right) && check(p.right, q.left);
}
}