Description:
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
Solution:
两种遍历树节点的方法,第一种是每次都先左后右,另外一种是先右后左。如果每次对应的节点都一样,则表示相同。
import java.util.*;
public class Solution {
LinkedList<TreeNode> forward = new LinkedList<TreeNode>();
LinkedList<TreeNode> backward = new LinkedList<TreeNode>();
TreeNode node1, node2;
boolean flag1, flag2;
public boolean isSymmetric(TreeNode root) {
forward.add(root);
backward.add(root);
while (!forward.isEmpty() && !backward.isEmpty()) {
node1 = forward.pop();
node2 = backward.pop();
flag1 = node1 == null;
flag2 = node2 == null;
if (flag1 || flag2) {
if (flag1 == flag2)
continue;
else
return false;
}
if (node1.val != node2.val)
return false;
forward.add(node1.left);
forward.add(node1.right);
backward.add(node2.right);
backward.add(node2.left);
}
return true;
}
}