`
hcx2013
  • 浏览: 88913 次
社区版块
存档分类
最新评论

Symmetric Tree

 
阅读更多

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


/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public boolean isSymmetric(TreeNode root) {
        if (root == null) {
        	return true;
        }
        if (root.left==null && root.right==null) {
        	return true;
        }
        if (root.left==null || root.right==null) {
        	return false;
        }
        LinkedList<TreeNode> q1 = new LinkedList<TreeNode>();
        LinkedList<TreeNode> q2 = new LinkedList<TreeNode>();
        q1.add(root.left);
        q2.add(root.right);
        
        while (!q1.isEmpty() && !q2.isEmpty()) {
        	TreeNode n1 = q1.poll();
        	TreeNode n2 = q2.poll();
        	
        	if (n1.val != n2.val) {
        		return false;
        	}
        	if (n1.left==null&&n2.right!=null || n1.left!=null&&n2.right==null) {
        		return false;
        	}
        	if (n1.right==null&&n2.left!=null || n1.right!=null&&n2.left==null) {
        		return false;
        	}
        	if (n1.left!=null && n2.right!=null) {
        		q1.add(n1.left);
                q2.add(n2.right);
        	}
        	if (n1.right!=null && n2.left!=null) {
        		q1.add(n1.right);
                q2.add(n2.left);
        	}
        }
        return true;
    }
}
 
2
1
分享到:
评论

相关推荐

    Code03_SymmetricTree.java

    java面试算法/刷题

    java-leetcode-101-symmetric-tree

    java java_leetcode-101-symmetric-tree

    python-leetcode题解之101-Symmetric-Tree

    python python_leetcode题解之101_Symmetric_Tree

    js-leetcode题解之101-symmetric-tree.js

    js js_leetcode题解之101-symmetric-tree.js

    LeetCode 精选 TOP 面试题(3)1

    Symmetric Tree)。这两个问题都涉及到对二叉树结构的深入理解和遍历策略。 首先,我们来看验证二叉搜索树。二叉搜索树(Binary Search Tree, BST)是一种特殊的二叉树,其特性是每个节点的值大于其左子树中的所有...

    Leetcode题目+解析+思路+答案.pdf

    - **Symmetric Tree**:判断一个二叉树是否是对称的。 - **Same Tree**:判断两棵二叉树是否相同。 - **Balanced Binary Tree**:判断一个二叉树是否是平衡的。 - **Path Sum**:判断是否存在一条路径,其节点值...

    LeetCode 101_C++_算法_leetcode_leetcode101_leetcode101_源码.zip

    在LeetCode上,第101题被称为“对称二叉树”(Symmetric Tree)。这是一道数据结构与算法问题,主要考察的是二叉树的遍历和比较。题目要求编写一个函数,判断给定的二叉树是否是对称的。对称二叉树的定义是:如果一...

    leetcode刷题列表

    例如,树的层级遍历(Levelorder Traversal)、判断树的对称性(Symmetric Tree)、找到二叉搜索树中距离某个值最近的节点(Closest Binary Search Tree Value)等。这些题目通常要求编写者熟悉树的结构和遍历方法,...

    lrucacheleetcode-luoleet:LeetcodesolutionsbyXinhangLuoandQinghaoDai

    lru缓存leetcode ...https://leetcode.com/problems/symmetric-tree/ Symmetric Tree 102 https://leetcode.com/problems/binary-tree-level-order-traversal/ Binary Tree Level Order Traversal 103 ...

    LeetCode练习答案

    - **对称树(Symmetric Tree)**: 判断一个二叉树是否是对称的。 - **相同的树(Same Tree)**: 判断两个二叉树是否相同。 - **平衡二叉树(Balanced Binary Tree)**: 判断一个二叉树是否是高度平衡的。 ##### 动态规划...

    LeetCodeAgri.zip

    3. **二叉树**:二叉树问题是算法题目的重头戏,包括"二叉树的遍历"(Traversal)、"判断二叉树对称性"(Symmetric Tree)等。Swift中的可选类型(Optional)使得处理空节点变得直观。 4. **动态规划**:动态规划是...

    LeetCode最全代码

    * [Binary Search Tree](https://github.com/kamyu104/LeetCode#binary-search-tree) * [Breadth-First Search](https://github.com/kamyu104/LeetCode#breadth-first-search) * [Depth-First Search]...

    LeetCode leetcode部分题解答代码实现

    * Symmetric Tree:给定一个二叉树,判断是否为对称树。这个题目需要使用递归的思想,将树分解成更小的子树,并判断是否对称。 4. 动态规划 动态规划是一种非常重要的算法思想,LeetCode 中有很多关于动态规划的...

    javalruleetcode-what_the_dead_men_say:what_the_dead_men_say

    Symmetric tree - Java Recursive - Java Iterative - C Recursive - Python Iterative 0102 Binary Tree Level Order Traversal - Python3 iterative 0103 Binary Tree Zigzag Level Order Traversal - ...

    leetcode答案-LeetCode-Trip:LeetCode刷题代码,大佬勿入

    leetcode 答案 LeetCode-Trip ...Symmetric Tree] [104. Maximum Depth of Binary Tree] [121. Best Time to Buy and Sell Stock] [167. Two Sum II - Input array is sorted] Medium [2. Add Two Numbers]

    leetcodetreenode-LeetCode---Symmetric-Tree:给定一棵二叉树,检查它是否是自身的镜像(即围绕其中心对称

    isSymmetric(TreeNode root) { if(root == NULL) return true; return checkSymmetric(root-&gt;left, root-&gt;right); } bool checkSymmetric(TreeNode* left, TreeNode* right) { if(left == NULL && right == NULL) ...

    Regular Multisource Clock Tree Synthesis

    •Introduction to Regular MSCTS and Flow Overview •Tap Synthesis •Htree Synthesis •Tap Assignment •Q&A • The effects of process and on-chip variation (OCV) ...• Custom clock tree generally c

    tree_left_rotate.rar_Different

    6. **spinlock_api_smp.c**: "spinlock API for SMP"指的是在一个对称多处理器(Symmetric MultiProcessing)系统中使用的自旋锁(spinlock)接口。自旋锁是多线程编程中的同步原语,用于保护共享资源,防止并发访问...

    四平方和定理leetcode-leetcode-practice:个人LeetCode练习代码

    101.symmetric-tree (对称二叉树) 102.binary-tree-level-order-traversal (二叉树的层序遍历) 104.maximum-depth-of-binary-tree (二叉树的最大深度) 105.construct-binary-tree-from-preorder-and-inorder-...

Global site tag (gtag.js) - Google Analytics