领扣LintCode算法问题答案-1360. 对称树

    科技2022-07-13  126

    领扣LintCode算法问题答案-1360. 对称树

    目录

    1360. 对称树描述样例 1:样例 2: 题解鸣谢

    1360. 对称树

    描述

    给定二叉树,返回它是否是自身的镜像(即这棵二叉树是否对称)。

    样例 1:

    输入: {1,2,2,3,4,4,3} 输出: true 解释: 1 / \ 2 2 / \ / \ 3 4 4 3 {1,2,2,3,4,4,3}这棵二叉树是对称的

    样例 2:

    输入: {1,2,2,#,3,#,3} 输出: false 解释: 1 / \ 2 2 \ \ 3 3 很显然这棵二叉树并不对称

    题解

    /** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** * @param root: root of the given tree * @return: whether it is a mirror of itself */ public boolean isSymmetric(TreeNode root) { // Write your code here if (root == null || (root.left == null && root.right == null)) { return true; } if (root.left == null || root.right == null) { return false; } Queue<TreeNode> lq = new LinkedList<>(); lq.offer(root.left); Queue<TreeNode> rq = new LinkedList<>(); rq.offer(root.right); while (!lq.isEmpty() && !rq.isEmpty()) { int size = lq.size(); if (rq.size() != size) { return false; } while (--size >= 0) { TreeNode ln = lq.poll(); TreeNode rn = rq.poll(); if (ln.val != rn.val) { return false; } if (ln.left == null && rn.right != null) { return false; } if (ln.left != null && rn.right == null) { return false; } if (ln.right == null && rn.left != null) { return false; } if (ln.right != null && rn.left == null) { return false; } if (ln.left != null) { lq.offer(ln.left); } if (ln.right != null) { lq.offer(ln.right); } if (rn.right != null) { rq.offer(rn.right); } if (rn.left != null) { rq.offer(rn.left); } } } return lq.isEmpty() && rq.isEmpty(); } }

    原题链接点这里

    鸣谢

    非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。 欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

    Processed: 0.010, SQL: 8