LeetCode 652 尋找重複的子樹

2021-09-29 04:42:40 字數 781 閱讀 7490

給定一棵二叉樹,返回所有重複的子樹。對於同一類的重複子樹,你只需要返回其中任意一棵的根結點即可。

兩棵樹重複是指它們具有相同的結構以及相同的結點值。

示例 1:

下面是兩個重複的子樹:

本題利用序列化 + hash的方法來完成。

(1)首先自底向上給每乙個子樹進行序列化,序列化的過程是將某子樹的根節點、其左子樹序列化的結果、以及其右子樹序列化的結果,組成乙個字元字串。這樣可以保證相同的子樹序列化之後得到相同的字串。

(2)建立hash型別的物件,將每個字串進行hash計算(一定範圍內能保證不同字串獲得不同結果),以hash結果和子樹對應的結構體subtreecount組成鍵值對存放在map中,如果有重複的子樹在subtreecount中記錄出現的次數。

leetcode652 尋找重複的子樹

題目 給定一棵二叉樹,返回所有重複的子樹。對於同一類的重複子樹,你只需要返回其中任意一棵的根結點即可。兩棵樹重複是指它們具有相同的結構以及相同的結點值。示例 1 1 23 424 4下面是兩個重複的子樹 2 4和 4因此,你需要以列表的形式返回上述重複子樹的根結點。思路 這裡採用的是string來儲...

LeetCode 652 尋找重複的子樹

給定一棵二叉樹,返回所有重複的子樹。對於同一類的重複子樹,你只需要返回其中任意一棵的根結點即可。兩棵樹重複是指它們具有相同的結構以及相同的結點值。示例 1 1 2 3 4 2 4 4 下面是兩個重複的子樹 2 4和 4 因此,你需要以列表的形式返回上述重複子樹的根結點。先對整棵樹進行序列化,然後對每...

leetcode 652 尋找重複的子樹

給定一棵二叉樹,返回所有重複的子樹。對於同一類的重複子樹,你只需要返回其中任意一棵的根結點即可。兩棵樹重複是指它們具有相同的結構以及相同的結點值。首先是進行序列化,然後序列化的過程中,進行樹的深度優先搜尋,在樹的搜尋過程中,進行乙個結果的統計。畢竟樹的深度優先訪問的時間負雜度是 n 的。class ...