Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.63 KB | None | 0 0
  1. /**
  2.  * Definition for a binary tree node.
  3.  * public class TreeNode {
  4.  *     int val;
  5.  *     TreeNode left;
  6.  *     TreeNode right;
  7.  *     TreeNode(int x) { val = x; }
  8.  * }
  9.  */
  10. class Solution {
  11.     public boolean isSubtree(TreeNode s, TreeNode t) {
  12.      // return dfs(s, t); // 8 ms
  13.      // return bfs(s,t); // 7 ms
  14.       return traverse(s,t); // 6ms;
  15.     }
  16.     private boolean isIdentical(TreeNode s, TreeNode t){
  17.     if(s == null && t == null) return true;
  18.     if(s == null || t == null) return false;
  19.    
  20.     if(t.val != s.val) return false;
  21.     return isIdentical(s.right, t.right) && isIdentical(s.left, t.left);
  22.   }
  23.  
  24.    private boolean traverse(TreeNode s, TreeNode t) {
  25.      return s != null && (isIdentical(s, t) || traverse(s.left, t) || traverse(s.right, t));
  26.    }
  27.  
  28.   private boolean bfs(TreeNode s, TreeNode t) {
  29.     Queue<TreeNode> queue = new LinkedList<>();
  30.     queue.offer(s);
  31.     while (!queue.isEmpty()) {
  32.         TreeNode current = queue.poll();
  33.         if (current.val == t.val && isIdentical(current, t)) return true;
  34.         if (current.left != null) queue.offer(current.left);
  35.         if (current.right != null) queue.offer(current.right);
  36.     }
  37.     return false;
  38.   }
  39.   private boolean dfs(TreeNode s, TreeNode t) {
  40.     Stack<TreeNode> stack = new Stack<>();
  41.       stack.push(s);
  42.       while(!stack.empty()){
  43.         TreeNode current = stack.pop();
  44.         if(current.val == t.val && isIdentical(current, t)){
  45.           return true;
  46.         }
  47.         if(current.right != null) stack.push(current.right);
  48.         if(current.left != null) stack.push(current.left);
  49.       }
  50.       return false;
  51.   }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement