101. Symmetric Tree
来源:互联网 发布:淘宝可可里小姐老板 编辑:程序博客网 时间:2024/05/20 04:49
题目:
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
Note:
Bonus points if you could solve it both recursively and iteratively.
判断一棵树是否对称,除了根节点之外,需要比较兄弟节点A,B,A的左子树是否与B的右子树相同,A的右子树是否与B的左子树相同。
代码:
递归的方法:
/** * 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;} return judge(root.left, root.right); } public boolean judge(TreeNode root1, TreeNode root2){ boolean flag; if(root1 == null && root2 == null){return true;} if(root1 == null || root2 == null){return false;} if(root1.val != root2.val){return false;} return judge(root1.left,root2.right)&&judge(root1.right,root2.left); }}
循环的方法:
/** * 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;} Queue<TreeNode> queue1 = new LinkedList<>(), queue2 = new LinkedList<>(); queue1.add(root.left); queue2.add(root.right); while(!queue1.isEmpty() && !queue2.isEmpty()){ int size = queue1.size(); if(size != queue2.size()){return false;} int i; for(i = 0; i < size; i++){ TreeNode t1 = queue1.remove(); TreeNode t2 = queue2.remove(); if(t1 == null && t2 == null){continue;} if(t1 == null || t2 == null){return false;} if(t1.val != t2.val){return false;} queue1.add(t1.left); queue1.add(t1.right); queue2.add(t2.right); queue2.add(t2.left); } } return queue1.isEmpty() && queue2.isEmpty(); }}
0 0
- LeetCode 101. Symmetric Tree
- [LeetCode]101.Symmetric Tree
- 【LeetCode】101.Symmetric Tree
- [Leetcode] 101. Symmetric Tree
- LeetCode --- 101. Symmetric Tree
- [leetcode] 101.Symmetric Tree
- 101.Symmetric Tree
- 101. Symmetric Tree
- LeetCode : 101. Symmetric Tree
- [leetcode]101.Symmetric Tree
- Leetcode 101. Symmetric Tree
- 101. Symmetric Tree
- 101. Symmetric Tree
- 101. Symmetric Tree LeetCode
- 101. Symmetric Tree
- 101. Symmetric Tree
- 101. Symmetric Tree
- [LeetCode]101. Symmetric Tree
- 用javascript与java进行RSA加密与解密
- JS正则表达式替换所有字符
- Oracle物化视图创建全过程using dblink
- English Summary in February 2016
- Linux中Shell脚本总结
- 101. Symmetric Tree
- 推送相关
- Broadcast Receiver的静态注册&动态注册
- 从瀑布开发模式到敏捷开发模式(scrum)的思路转换
- ZXing性能优化 - 用NDK重写旋转图片代码
- ReactiveCocoa 4 官方文档翻译
- android常用的几个获取包或activity以及判断前后台等
- java笔记-- maven中snapshot快照库和release发布库的区别和作用
- Unity性能优化专题(腾讯牛人分享经验)