572. Subtree of Another Tree

来源:互联网 发布:网络用语dp什么意思 编辑:程序博客网 时间:2024/06/07 07:12

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; } * } */public class Solution {    public boolean isSubtree(TreeNode s, TreeNode t) {        if(s==null)             return false;        if(isSame(s,t))             return true;                return isSubtree(s.left,t) || isSubtree(s.right,t);    }    private boolean isSame(TreeNode s, TreeNode t){        if (s == null && t == null)             return true;        if (s == null || t == null)             return false;        return s.val == t.val && isSame(s.left, t.left) && isSame(s.right, t.right);    }}