对称的二叉树

题目:
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的

例子:
对称的二叉树_第1张图片

代码一(递归法):

class Solution {
    public boolean isSymmetric(TreeNode root) {
        return symmetric(root.getLeft(), root.getRight());
    }

	public boolean symmetric(TreeNode A, TreeNode B){
    	return symmetric(A.getLeft(), B.getRight) && symmetric(A.getRight(), B.getLeft()) && (A==B || A.val == B.val);
    }
}

解释一:
就是递归法,同树的镜像树一样,把树的镜像树搞清楚了,这个题目自然也就容易了。这里附上二叉树的镜像树的例子:链接,看完这个例子,再来看本题就会很简单。

代码一修正:

class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root == null) return true;
        return symmetric(root.getLeft(), root.getRight());
    }

	public boolean symmetric(TreeNode A, TreeNode B){
		if(A==null && B==null) return true;
		if(A==null || B==null || A.val!=B.val) return false;
    	return symmetric(A.getLeft(), B.getRight) && symmetric(A.getRight(), B.getLeft());
    }
}

代码一忽略了null指针是没有子节点的。

你可能感兴趣的:(力扣刷题,leetcode,算法,职场和发展)