代码拉取完成,页面将自动刷新
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;
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。