LeetCode101 SynmetricTree Java题解

题目:

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

解题:

是否对称就是要求每一层从左到右刚好等于从右到左,有两种解法一种非递归,一种递归。

非递归:

public static boolean isSymmetric(TreeNode root) {

		if(root==null)
			return true;
		Queue<TreeNode> left=new LinkedList<>();
		Queue<TreeNode> right=new LinkedList<>();
		if(root.left==null)
			left.offer(root.left);
		if(root.right==null)
			right.offer(root.right);
		while(!left.isEmpty()&&!right.isEmpty())
		{
			TreeNode l=left.poll();
			TreeNode r=right.poll();
			if(l==null&&r==null) continue;
			if(l==null||r==null) return false;
			if(l.val!=r.val) return false;
			left.offer(l.left);left.offer(l.right);
			right.offer(r.right);right.offer(r.left);//倒序插入 形成镜像

		}
		if(left.isEmpty()&&right.isEmpty())
			return true;
		else {
			return false;
		}

    }
	

递归:

 public boolean isSymmetric2(TreeNode root) {
		 if(root==null)
			 return true;
		 else {
			return  isSame(root.left, root.right);
		}

	 }

	 public boolean isSame(TreeNode left,TreeNode right)
	 {
		 if(left==null&& right==null)
			 return true;
		 if(left==null||right==null)
			 return false;
		 if(left.val!=right.val)
			 return false;
		 else {
			return isSame(left.left, right.right)&&isSame(left.right, right.left);
		}

	 }

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 22:04:24

LeetCode101 SynmetricTree Java题解的相关文章

LeetCode71 Simplify Path java题解

题目: Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/", => "/home" path = "/a/./b/../../c/", => "/c" 题解: 解题思路:这题是简化目录,每一级目录前面都有一个斜杠,我可以首先对斜杠进行分割,分割之后得到的结果无外乎4种情况:正常目录名称,空

LeetCode229 MajorityElementII java题解

<p>题目:</p><p><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 30px;">Given an integer array of size </span><span style="box-sizi

LeetCode257 BinaryTreePaths(打印根节点到叶子节点的左右路径) Java题解

题目: Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 / 2 3 5 All root-to-leaf paths are: ["1->2->5", "1->3"] 题解: 用深度优先遍历,类似二叉树的前序变遍历 代码: public class LeetCode257_BinaryTreePat

LeetCode108_Convert SortedArray to BinarySearchTree(将有序数组转成二叉排序树) Java题解

题目: Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 题解: 和我上面一篇将有序链表转成二叉排序树中用哈希表解的方法是一样的.基本思路:链表中间那个节点为树的根节点.根节点的左子树节点应该是根节点左边那部分的中间节点,根节点的右节点应该是根节点右边那部分链表的中间节点.后面就依照这个规律依次类推了. public static TreeNode s

LeetCode102 Binary Tree Level Order Traversal Java题解

题解: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level). For example: Given binary tree {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 return its level order traversal as: [ [3], [9,20], [15,7] ] 解

LeetCode110 Blanced Binary Tree Java 题解

题目: Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1. 题解: 判断一颗二叉树是不是平衡二叉树  ,平衡二叉树是每个节

LeetCode234_PalindromeLinkedList (推断是否为回文链表) Java题解

题目: Given a singly linked list, determine if it is a palindrome. Follow up: Could you do it in O(n) time and O(1) space? 题解: 推断一个链表是不是回文的,这里要求O(n)时间复杂度和O(1)的空间时间复杂度.总共想了三种办法,三种办法都用到了两个指针,符合题目要求的仅仅有最后一种. 第一种办法:用数组倒着存前半段的链表的值.然后和后半段链表的值进行比較. 这样的解法执行的时间

LeetCode109_Convert Sorted List to Binary Search t题目tiTree(将链表转成二叉排序树) Java题解

题目: Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. 题解:将一个有序链表转成二叉排序树,如果是一棵相对平衡的排序树,应该是这样的,链表中间那个节点为树的根节点,根节点的左子树节点应该是根节点左边那部分的中间节点,根节点的右节点应该是根节点右边那部分链表的中间节点,后面就按照这个规律依次类推了.知道上面的规律之后,问题的关键

TopCoder SRMS 1 字符串处理问题 Java题解

Problem Statement   Let's say you have a binary string such as the following: 011100011 One way to encrypt this string is to add to each digit the sum of its adjacent digits. For example, the above string would become: 123210122 In particular, if P i