2 Star 10 Fork 2

CG国斌 / myleetcode

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
_101.java 1.83 KB
一键复制 编辑 原始数据 按行查看 历史
package com.hit.basmath.learn.binary_tree;
import com.hit.common.TreeNode;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
/**
* 101. Symmetric Tree
* <p>
* Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
* <p>
* For example, this binary tree [1,2,2,3,4,4,3] is symmetric:
* <p>
* 1
* / \
* 2 2
* / \ / \
* 3 4 4 3
* <p>
* But the following [1,2,2,null,3,null,3] is not:
* <p>
* 1
* / \
* 2 2
* \ \
* 3 3
* <p>
* Note:
* <p>
* Bonus points if you could solve it both recursively and iteratively.
*/
public class _101 {
/**
* recursive method
*
* @param root pending node
* @return true or false
*/
public boolean isSymmetric(TreeNode root) {
return root == null || isSymmetricHelper(root.left, root.right);
}
private boolean isSymmetricHelper(TreeNode left, TreeNode right) {
if (left == null || right == null) return left == right;
return left.val == right.val
&& isSymmetricHelper(left.left, right.right)
&& isSymmetricHelper(left.right, right.left);
}
/**
* Non-recursive method
*
* @param root pending node
* @return true or false
*/
public boolean isSymmetric2(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
queue.add(root);
while (!queue.isEmpty()) {
TreeNode t1 = queue.poll();
TreeNode t2 = queue.poll();
if (t1 == null && t2 == null) continue;
if (t1 == null || t2 == null) return false;
if (t1.val != t2.val) return false;
queue.add(t1.left);
queue.add(t2.right);
queue.add(t1.right);
queue.add(t2.left);
}
return true;
}
}
Java
1
https://gitee.com/guobinhit/myleetcode.git
git@gitee.com:guobinhit/myleetcode.git
guobinhit
myleetcode
myleetcode
master

搜索帮助