题目:
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
1 / \ 2 2 / \ / \ 3 4 4 3
But the following is not:
1 / \ 2 2 \ \ 3 3
Note:
Bonus points if you could solve it both recursively and iteratively.
confused what"{1,#,2,3}"means? > read more on how binary tree is serialized on OJ.
题意:
使用递归或迭代来判断这二叉树是不是对称的
解题思路:
这里我使用的是递归来判断
从左右结点同时开始出发
首先判断它当前左右根节点是否为空,为空也是对称的
然后判断如果某一边为空,或者左右根节点的值不相等,那么直接为不对称
最后判断 n1的左结点与n2的右结点是否相等,n1的右结点是否与n2的左结点相等,以此类推来比较所有的左右结点
代码:
public boolean isSymmetric(TreeNode root) {
if(root == null) {
return true;
}
return isTree(root.left,root.right);
}
public boolean isTree(TreeNode left, TreeNode right) {
if(left == null && right == null) {
return true;
}
if(left == null || right == null || left.val != right.val) {
return false;
}
return isTree(left.left,right.right) && isTree(left.right, right.left);
}