572 另乙個樹的子樹 遞迴

2021-10-12 17:50:06 字數 826 閱讀 5420

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

ps:這題沒太抓住細節,日後再看一下官方題解

該題還是遵循「找到乙個節點該做的事情,剩下的交給遞迴框架」。

歸很重要的一點就是找到最簡單的子問題。我們可以設想一下,一棵樹s就三個節點,root、left、right。我們要做的就是找到首先以root為根節點的子樹,看他是否在t中有相同結構,再就是找到以left為根節點…right也是同理…。

所以我們就構造乙個輔助函式去對比,兩顆子樹的結構是不是相同。要注意的是假如現在是以root為根節點嘛。我們比較的時候應該比較的是一顆完整的子樹結構,即 這顆s的子樹應該是[root,left,right]這才叫一顆完整的子樹。再比如現在以left為根節點,那麼現在完整的子樹應該為[left,left.left,left.right]

這三個都要比較,只有這三個都能在t中對應起來,才能說s中有一顆完整的子樹在t中存在相同結構的子樹。

class

solution

public

boolean

help

(treenode s, treenode t)

}

572 另乙個樹的子樹

題目分析 另外寫乙個函式用於判斷兩顆二叉樹是不是相同的。然後依次挪動s的位置,對s當前指的節點呼叫上面的函式,進行判斷。definition for a binary tree node.struct treenode class solution else if s null t null if ...

572 另乙個樹的子樹

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

572 另乙個樹的子樹

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