Subtree of Another Tree (Leetcode 572)

在這里給出兩種做法,

第一種是直接搜索,O(n * m) 的worse case,

class Solution {
public:
    
    bool isSameTree(TreeNode* x, TreeNode* y){
        if(x == NULL && y == NULL) return true;
        else if(x == NULL || y == NULL) return false;
        if(x->val != y->val) return false;
        return isSameTree(x->left, y->left) && isSameTree(x->right, y->right);
    }

    bool isSubtree(TreeNode* s, TreeNode* t) {
        if(s == NULL && t == NULL) return true;
        else if(s == NULL || t == NULL) return false;
        if(isSameTree(s, t)) return true;
        return isSubtree(s->left, t) || isSubtree(s->right, t);
    }
};

第二種參考網(wǎng)上的思路,把樹轉(zhuǎn)化成string,然后再用find substring的辦法。不過庫(kù)函數(shù)的find substring一般也不用kmp,而是直接一個(gè)一個(gè)的搜索查找,所以復(fù)雜度也是 O(n * m) 級(jí)別. 兩種方法leetcode runtime差不多

class Solution {
public:

    void serialize(TreeNode* root, string &s){
        if(root){
            s += '(' + to_string(root->val) + ')';
            s += ' ';
            serialize(root->left, s);
            serialize(root->right, s);
        }else{
            s += '#' + ' ';
        }
    }

    bool isSubtree(TreeNode* s, TreeNode* t) {
        if(!s && !t) return true;
        else if(!s || !t) return false;
        string s_string, t_string;
        serialize(s, s_string);
        serialize(t, t_string);
        return s_string.find(t_string) != string::npos;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,898評(píng)論 0 33
  • LeetCode 刷題隨手記 - 第一部分 前 256 題(非會(huì)員),僅算法題,的吐槽 https://leetc...
    蕾娜漢默閱讀 18,367評(píng)論 2 36
  • 僅僅開班四天,我就已經(jīng)三次沒有交作業(yè)了,違規(guī)次數(shù)已經(jīng)用完,今早給組長(zhǎng)留言要求退出,組長(zhǎng)告知第四次違規(guī)才可會(huì)退群,鼓...
    瀟湘2016閱讀 273評(píng)論 0 0
  • 跌倒并不可怕,可怕的是跌倒后再也站不起來。 一生中我們總會(huì)遇到大大小小的許多事情,有成功也會(huì)有失敗。上學(xué)的時(shí)候,最...
    周詩(shī)汶閱讀 543評(píng)論 0 2

友情鏈接更多精彩內(nèi)容