llllmz

导航

572. 另一棵树的子树c

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool issameroot(struct TreeNode* p,struct TreeNode* q){
    if(!p&&!q) return true;
    if(!q&&p || q&&!p) return false;
    if(q->val!=p->val) return false;
    return issameroot(p->left,q->left)&&issameroot(q->right,p->right);
}

bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){
    if(!root&&!subRoot) return true;
    if(!root&&subRoot ||root&&!subRoot ) return false;
    bool a=isSubtree(root->left,subRoot);
    bool b=isSubtree(root->right,subRoot);
    bool c=issameroot(root,subRoot);
    return a||b||c;
}

我是先后序遍历,然后从低往上把每个子树都对比一下。

posted on 2024-03-05 15:53  神奇的萝卜丝  阅读(9)  评论(0)    收藏  举报