Leetcode: Symmetric Tree
2016-09-18 20:54
281 查看
给定一个树,判断是否为镜像对称。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
import java.util.*;
public class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null){
return true;
}
List<TreeNode> leftlist = new ArrayList<TreeNode>(); //左List记录root左边的广度遍历
List<TreeNode> rightlist = new ArrayList<TreeNode>(); //右list记录root右边的广度遍历
leftlist.add(root.left);
rightlist.add(root.right);
while(leftlist.size() != 0 ){
if((leftlist.get(0) == null) ^ (rightlist.get(0) == null) ){ //是否一个为空一个不为空
return false;
}
if(leftlist.get(0) != rightlist.get(0) ){ //左右都不为null
if(leftlist.get(0).val != rightlist.get(0).val ){
return false;
}
leftlist.add(leftlist.get(0).right );
leftlist.add(leftlist.get(0).left );
rightlist.add(rightlist.get(0).left );
rightlist.add(rightlist.get(0).right );
}
leftlist.remove(0);
rightlist.remove(0);
}
return true;
}
}
类似于广度遍历,左边的子树从右向左遍历,右边的子树从左向右遍历,用两个队列来维护判断它们是否相等对称。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
import java.util.*;
public class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null){
return true;
}
List<TreeNode> leftlist = new ArrayList<TreeNode>(); //左List记录root左边的广度遍历
List<TreeNode> rightlist = new ArrayList<TreeNode>(); //右list记录root右边的广度遍历
leftlist.add(root.left);
rightlist.add(root.right);
while(leftlist.size() != 0 ){
if((leftlist.get(0) == null) ^ (rightlist.get(0) == null) ){ //是否一个为空一个不为空
return false;
}
if(leftlist.get(0) != rightlist.get(0) ){ //左右都不为null
if(leftlist.get(0).val != rightlist.get(0).val ){
return false;
}
leftlist.add(leftlist.get(0).right );
leftlist.add(leftlist.get(0).left );
rightlist.add(rightlist.get(0).left );
rightlist.add(rightlist.get(0).right );
}
leftlist.remove(0);
rightlist.remove(0);
}
return true;
}
}
类似于广度遍历,左边的子树从右向左遍历,右边的子树从左向右遍历,用两个队列来维护判断它们是否相等对称。
相关文章推荐
- 【LeetCode】Symmetric Tree
- 【Leetcode】Symmetric Tree
- LeetCode101.Symmetric Tree
- Java [Leetcode 101]Symmetric Tree
- Symmetric Tree [LEETCODE]
- leetcode - Symmetric Tree
- LeetCode:Symmetric Tree(循环版)
- LeetCode: Symmetric Tree
- leetcode - Symmetric Tree
- leetcode 之 Symmetric Tree 镜像树
- Symmetric Tree -- LeetCode
- Leetcode#101 Symmetric Tree
- leetcode-Symmetric Tree 对称树
- [leetcode][tree] Symmetric Tree
- LeetCode笔记:101. Symmetric Tree
- leetcode:Symmetric Tree
- leetcode——101——Symmetric Tree
- [LeetCode]Symmetric Tree
- [leetcode]Symmetric Tree
- leetcode-Symmetric Tree 对称树