IncredibleThings

导航

LeetCode - Subtree of Another Tree

Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and node values with a subtree of s. A subtree of s is a tree consists of a node in s and all of this node's descendants. The tree s could also be considered as a subtree of itself.

Example 1:
Given tree s:

     3
    / \
   4   5
  / \
 1   2
Given tree t:
   4 
  / \
 1   2
Return true, because t has the same structure and node values with a subtree of s.
Example 2:
Given tree s:

     3
    / \
   4   5
  / \
 1   2
    /
   0
Given tree t:
   4
  / \
 1   2
Return false.

还是用到了递归和序列化的解法:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isSubtree(TreeNode s, TreeNode t) {
        String str1 = serialize(s);
        String str2 = serialize(t);
        return str1.contains(str2);
    }
    
    private String serialize (TreeNode root){
        if(root == null){return "#";}
        String serial = "<"+root.val+">"+ serialize(root.left) + serialize (root.right);
        return serial;
    }
}

 

posted on 2018-09-26 11:01  IncredibleThings  阅读(129)  评论(0编辑  收藏  举报