问题描述
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
(树状图画不出来,右转看原题:https://leetcode.com/problems/symmetric-tree/)
Note: Bonus points if you could solve it both recursively and iteratively.
解决思路
递归。感觉没啥要说的,代码写的思路挺清晰的。
代码
package leetcode;
import sun.reflect.generics.tree.Tree;
public class SymmetricTree {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public boolean isSymmetric(TreeNode root) {
if (root == null){
return true;
}
return checkNode(root.left, root.right);
}
public boolean checkNode(TreeNode node1, TreeNode node2){
if (node1 == null && node2 == null){
return true;
}
if (node1 == null || node2 == null){
return false;
}
if (node1.val != node2.val){
return false;
}else{
return checkNode(node1.left, node2.right) &&
checkNode(node1.right, node2.left);
}
}
}