对称的二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
限制:
0 <= 节点个数 <= 1000
解题思路:
java
/**
* 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) {
if(root==null) return true;
return iscurr(root.left,root.right);
}
boolean iscurr(TreeNode L,TreeNode R){
if(L==null && R==null){
return true;
}
if(L==null|| R==null ||L.val != R.val){
return false;
}
return iscurr(L.left,R.right)&&iscurr(L.right,R.left);
}
}
python
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
def iscurr( L, R):
if not L and not R:
return True
if not L or not R or L.val!=R.val:
return False
return iscurr(L.left,R.right) and iscurr(L.right,R.left)
if not root:
return True
return iscurr(root.left,root.right)