leetcode 572 Subtree of Another Tree

来源:互联网 发布:疯狂java讲义第3版光盘 编辑:程序博客网 时间:2024/06/04 18:41

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.

class Solution {
    
public:
  bool  isSametree(TreeNode *s,TreeNode *t)
{
    if(t==NULL&&s==NULL)
        return true;
    if(t==NULL||s==NULL)
        return false;
    if(s->val==t->val)
        return isSametree(s->left,t->left)&&isSametree(s->right,t->right);
    else 
      return  false;
}
    bool isSubtree(TreeNode* s, TreeNode* t) {
        if(s==NULL)
            return false;
        if(t==NULL)
            return true;
        if(isSametree(s,t))
            return true;
       return( isSubtree(s->left,t)||isSubtree(s->right,t));
           
    }
};

思路:

递归调用