您的位置:首页 > 其它

LeetCode Symmetric Tree

2015-07-04 10:53 441 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: