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

2021-10-05 05:52:49 字數 691 閱讀 9910

題目描述

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)

分析

一開始我把子結構理解成一棵樹得在另一顆樹的末端才算是子結構,後來看了討論區發現可以位於樹的中間位置。

深度遍歷二叉樹知道找到a的乙個結點值等於b的根節點的值,然後判斷從這兩個結點開始對比,b是否在a中。

媽耶,居然有點難以確認自己寫的判斷兩棵樹是否相同的**部分是不是正確了…不過這裡的寫法是針對這一題的,如果是直接對比兩顆二叉樹是否相等,開始的條件會有所變動。

時間複雜度

o(n)

**

public

class

solution

if(p.left!=null)s.

push

(p.left);if

(p.right!=null)s.

push

(p.right);}

return

false;}

boolean

ifsame

(treenode root1,treenode root2)

}

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

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

刷演算法 一棵樹是否是另一棵樹的子結構

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 假設樹a的根節點ra和樹b的根節點rb值相同,那麼接下來就以這兩個節點開始依次比較ra.left和rb.left ra.right和rb.right,過程中只要有乙個不相同則返回 繼續比較ra.left和rb是否...

刷演算法 一棵樹是否是另一棵樹的子結構

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 假設樹a的根節點ra和樹b的根節點rb值相同,那麼接下來就以這兩個節點開始依次比較ra.left和rb.left ra.right和rb.right,過程中只要有乙個不相同則返回 繼續比較ra.left和rb是否...