Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree [1,2,2,3,4,4,3]
is symmetric:
1 / \ 2 2 / \ / \ 3 4 4 3
But the following [1,2,2,null,3,null,3]
is not:
1 / \ 2 2 \ \ 3 3
迭代法:
对于所有子节点,首先判断是否都存在子节点。如果存在子节点的时候,首先判断left和right的值是否相同,然后判断子节点是否存在子节点,如果都没有子节点则true,如果只有一部分没有,返回false。然后如果子节点都有子节点,继续对(left.left,right.right)以及(left.right,right.left)进行判断
![]()
其实所有的都可以看成是四个元素的组合。
class Solution { public boolean isSymmetric(TreeNode root) { if(root==null) return true; return isChildSymmetric(root.left,root.right); } public boolean isChildSymmetric(TreeNode left,TreeNode right){ if(left==null||right==null) return left==right; else{ if(left.val!=right.val) return false; return isChildSymmetric(left.left,right.right)&&isChildSymmetric(left.right,right.left); } } }