Leetcode 572 另一棵樹的子樹

2021-10-05 20:42:44 字數 540 閱讀 7022

給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。

暴力dfs

class solution 

//find方法相當於dfs,遍歷樹的結點

bool find(treenode* tree, treenode* t)

bool issubtree(treenode* s, treenode* t)

};

1.先序遍歷必然連續;

2.檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹相當於檢驗s的先序序列中是否包含t的先序序列;

3.注意子樹的概念。當某非空節點的子節點為空時,需要補上特殊值,比如rnull或者lnull。

綜上,kmp!

樹雜湊。

簡單來講,樹雜湊是構造乙個特殊的函式,給樹乙個專有的值。

使用了樹雜湊之後,對於s樹,可以得到乙個陣列。對於t

樹,可以得到乙個數字。遍歷尋找就可以。

leetcode 另一棵樹的子樹

題目描述 給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹 s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。測試用例 給定的樹 s 給定的樹 t 返回 true,因為 t 與 s 的乙個子樹擁有相同的結構和節點值。思路 若...

一棵樹是否為另一棵樹的子結構

輸入兩顆二叉樹a,b,判斷b是不是a的子結構。問題描述 給定兩個二叉樹的根節點,判斷第二樹是否是第乙個樹的子樹,如果是返回1,否則返回0.拿第二個樹的每個節點去和第乙個樹做匹配,如果某個節點匹配成功,就接著往下匹配,否則重新從第二個樹的的根節點開始。注意區別 測試用例 樹1 42 6 1 3 5 7...

另一棵樹的子樹

給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。示例 1 給定的樹 s 3 4 5 1 2 給定的樹 t 4 1 2 返回 true,因為 t 與 s 的乙個子樹擁有相同的...