101. 对称二叉树
题目:给定一个二叉树,检查它是否是镜像对称的。
解法一:递归
思路:递归判断根节点的左右子树p,q是否是对称二叉树
代码:
/**
- 
Definition for a binary tree node.
 - 
public class TreeNode {
 - 
int val; - 
TreeNode left; - 
TreeNode right; - 
TreeNode(int x) { val = x; } - 
}
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
return check(root,root);
}public boolean check(TreeNode p,TreeNode q){
if(pnull&&qnull){
return true;
}
if(pnull||qnull){
return false;
}
return p.val==q.val&&check(p.left,q.right)&&check(p.right,q.left);
}
} 
解法二:迭代
思路:利用一个队列,每次取队里两个节点进行比较,入队时以将要比较的两个节点的顺序入队
代码:
/**
- Definition for a binary tree node.
 - public class TreeNode {
 - 
int val; - 
TreeNode left; - 
TreeNode right; - 
TreeNode(int x) { val = x; } - }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
if(rootnull){
return true;
}
Queuequeue = new LinkedList(); null&&t2null){
queue.offer(root);
queue.offer(root);
while(!queue.isEmpty()){
TreeNode t1 = queue.poll();
TreeNode t2 = queue.poll();
if(t1
continue;
}
if(t1null||t2==null){
return false;
}
if(t1.val!=t2.val){
return false;
}
queue.offer(t1.left);
queue.offer(t2.right);
queue.offer(t1.right);
queue.offer(t2.left);
}
return true;
}
} 
                    
                
                
            
        
浙公网安备 33010602011771号