链接
牛客:对称的二叉树
LeetCode:剑指 Offer 28. 对称的二叉树
101. 对称二叉树
思路
比较简单,看代码即可理解
代码
牛客:
public class Solution {
boolean isSymmetrical(TreeNode pRoot) {
if (pRoot == null)
return true;
return isSymmetrical(pRoot.left, pRoot.right);
}
private boolean isSymmetrical(TreeNode t1, TreeNode t2) {
if (t1 == null && t2 == null)
return true;
//当t1、t2只有一个为空时
if (t1 == null || t2 == null)
return false;
if (t1.val != t2.val)
return false;
//对称的二叉树其实是左子树的左子结点和右子树的右子结点对称
return isSymmetrical(t1.left, t2.right) && isSymmetrical(t1.right, t2.left);
}
}
LeetCode:
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root==null){
return true;
}
return help(root.left, root.right);
}
public boolean help(TreeNode left, TreeNode right){
if(left == null && right == null){
return true;
}
if(left == null || right == null){
return false;
}
return left.val == right.val && help(left.left, right.right) && help(left.right,right.left);
}
}