# 【LeetCode】101. Symmetric Tree 解题报告

6493人阅读 评论(0)

## Subject

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

### solution 1

    /**
* 双端队列 <br />
* DFS <br />
* 3ms <br />
* beats 6.29% of java submissions
*
* @param root
* @return
*/
public boolean isSymmetric(TreeNode root) {
if (root == null) {
return true;
}

TreeNode preNode = null;
TreeNode postNode = null;

while (!deque.isEmpty()) {
preNode = deque.pollFirst();
postNode = deque.pollLast();
if (preNode == null && postNode == null) {
continue;
}
if (preNode == null || postNode == null) {
return false;
}
if (preNode.val != postNode.val) {
return false;
} else {

}
}
return true;
}

### solution 2

    /**
* 递归方式 <br />
* 1ms <br />
*
* @param root
* @return
*/
public boolean isSysmmetric2(TreeNode root) {
if (root == null) {
return true;
}

return checkNodes(root.left, root.right);
}

public boolean checkNodes(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 checkNodes(node1.left, node2.right)
&& checkNodes(node1.right, node2.left);
}
}

1ms

### solution 3

    /**
* 拷贝一颗二叉树，reverse。或者拷贝的时候直接反转。 <br />
* 然后在使用Same Tree的方法判断这两个树是否一样。 <br />
* 1ms
*
* @param root
* @return
*/
public boolean isSysmmetric3(TreeNode root) {
if (root == null) {
return true;
}

TreeNode newRootNode = copyNode(root);

SameTree sameTree = new SameTree();
return sameTree.isSameTree(root, newRootNode);
}

/**
* 左右对换结点拷贝二叉树
*
* @param node
* @return
*/
private TreeNode copyNode(TreeNode node) {
if (node == null) {
return null;
}
TreeNode treeNode = new TreeNode(node.val);
treeNode.left = copyNode(node.right);
treeNode.right = copyNode(node.left);
return treeNode;
}

【Reverse Binary Tree】

bingo~~

1
0

个人资料
• 访问：1293097次
• 积分：9493
• 等级：
• 排名：第2256名
• 原创：182篇
• 转载：9篇
• 译文：2篇
• 评论：797条
联系方式
博客专栏
 kotlin从零单排 文章：0篇 阅读：0
 IOS从零单排 文章：0篇 阅读：0
 LeetCode解题报告 Python 篇 文章：0篇 阅读：0
 Android问题总结 文章：18篇 阅读：22819
 自定义View系列 文章：9篇 阅读：8216
 LeetCode解题报告 Java 篇 文章：23篇 阅读：126580
 Android高分局 文章：25篇 阅读：82824
 Android地图开发 文章：5篇 阅读：371366
 Android从零单排 文章：73篇 阅读：829880
最新评论
CNZZ统计