程序媛詹妮弗
终身学习

Given two binary trees, write a function to check if they are the same or not.

Two binary trees are considered the same if they are structurally identical and the nodes have the same value.

Example 1:

Input:     1         1
          / \       / \
         2   3     2   3

        [1,2,3],   [1,2,3]

Output: true

Example 2:

Input:     1         1
          /           \
         2             2

        [1,2],     [1,null,2]

Output: false

 

 

 

题意:

给定两个树,判断两个数是否相同

 

Solution1:  DFS  (Code will be neat and simple)

 

 

code

 1 class Solution {
 2     public boolean isSameTree(TreeNode p, TreeNode q) {
 3         if(p ==null && q ==null) return true;
 4         if(p ==null || q ==null) return false;  
 5         
 6         if(p.val == q.val){
 7              return  isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
 8         }
 9         return false;   
10     }
11 }

 

 

Solution2:  Iteration(Using a stack or a queue to simulate how DFS works)

 

 

code

 1 class Solution {
 2     public boolean isSameTree(TreeNode p, TreeNode q) {
 3         Queue<TreeNode> queue = new LinkedList<>();
 4         
 5         queue.add(p);
 6         queue.add(q);
 7         
 8         while(!queue.isEmpty()){
 9             TreeNode node1 = queue.remove();
10             TreeNode node2 = queue.remove();      
11             
12             if(node1==null && node2 ==null) continue;
13             if(node1==null || node2==null) return false;
14             if(node1.val != node2.val)  return false;
15             
16             queue.add(node1.left);
17             queue.add(node2.left);
18             
19             queue.add(node1.right);
20             queue.add(node2.right);
21         }
22         return true;
23     }
24 }

 

posted on 2019-04-18 18:55  程序媛詹妮弗  阅读(119)  评论(0编辑  收藏  举报