LeetCode101 SynmetricTree Java题解

原创 2015年07月06日 19:43:06

题目:

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);
		}
		 
	 }



[LeetCode] Leetcode 题解索引 (C++/Java/Python/Sql)

全部最新的题解可以在 我的 github 上找,欢迎 star 和 watch ~ 更新中~~说明这个系列的题解包括用 C++/Java/Python 写的 leetcode 上的算法题目,和 Sq...
  • hcbbt
  • hcbbt
  • 2015年03月11日 09:49
  • 24075

leetcode101题 题解 翻译 C语言版 Python版

101. Symmetric Tree Given a binary tree, check whether it is a mirror of itself (ie, symmetric ar...
  • yingzinanfei
  • yingzinanfei
  • 2016年04月14日 21:34
  • 485

【LeetCode】101. Symmetric Tree 解题报告

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51471280Subject 出处:https://leetcode.com/pro...
  • crazy1235
  • crazy1235
  • 2016年05月30日 23:06
  • 6543

poj1321题解(也是我的第一篇博客)

和八皇后问题基本类似,回溯算法搞定。//在poj提交时最好不要用布 //尔类型,ce过#include #include #include char chess[9][10];//最后一个放换...
  • abc13068938939
  • abc13068938939
  • 2016年05月12日 10:06
  • 236

POJ3187Backward Digit Sums【dfs 暴搜水题】

Language: Default Backward Digit Sums Time Limit: 1000MS   Memory Limit: 65536K ...
  • R1986799047
  • R1986799047
  • 2015年08月12日 00:24
  • 504

HDU6077

原来是直接模拟,还是队友牛逼 大佬博客#include #include #include #include using namespace std; char s[105][105];int fi...
  • Cai_Haiq
  • Cai_Haiq
  • 2017年08月03日 18:59
  • 157

hdoj--1254--推箱子(bfs好题)

 推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...
  • qq_29963431
  • qq_29963431
  • 2016年03月13日 20:32
  • 456

Luogu 1894 [USACO4.2]完美的牛栏The Perfect Stall

Luogu 1894 [USACO4.2]完美的牛栏The Perfect Stall(二分图最大匹配)Description农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术。不幸的是,由...
  • songyuchen0001
  • songyuchen0001
  • 2017年07月04日 17:15
  • 448

hdu 4003 Find Metal Mineral (树形背包dp)

题意 给一棵n个节点的树, 节点编号为1~n, 每条边都有一个花费值. 有k个机器人从S点出发, 问让机器人遍历所有边,最少花费值多少? 思路 很好的一题, 推荐! ...
  • shuangde800
  • shuangde800
  • 2013年08月24日 00:30
  • 2328

LeetCode101—Symmetric Tree

LeetCode101—Symmetric Tree 判断一棵树是否对称
  • zhangxiao93
  • zhangxiao93
  • 2016年03月13日 20:34
  • 514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode101 SynmetricTree Java题解
举报原因:
原因补充:

(最多只允许输入30个字)