LeetCode 100 相同的樹 做題小結

2021-10-11 23:11:21 字數 2083 閱讀 3422

給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。

如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。

示例 1:

輸入: 1 1

/ \ / \

2 3 2 3

[1,2,3], [1,2,3]

輸出: true

示例 2:

輸入: 1 1

/ \

2 2

[1,2], [1,null,2]

輸出: false

示例 3:

輸入: 1 1

/ \ / \

2 1 1 2

[1,2,1], [1,1,2]

輸出: false

兩個二叉樹相同,當且僅當兩個二叉樹的結構完全相同,且所有對應節點的值相同。因此,可以通過搜尋的方式判斷兩個二叉樹是否相同。

如果兩個二叉樹都為空,則兩個二叉樹相同。如果兩個二叉樹中有且只有乙個為空,則兩個二叉樹一定不相同。

如果兩個二叉樹都不為空,那麼首先判斷它們的根節點的值是否相同,若不相同則兩個二叉樹一定不同,若相同,再分別判斷兩個二叉樹的左子樹是否相同以及右子樹是否相同。這是乙個遞迴的過程,因此可以使用深度優先搜尋,遞迴地判斷兩個二叉樹是否相同。

class

solution

else

if(p == null || q == null)

else

if(p.val != q.val)

else

}}

也可以通過廣度優先搜尋判斷兩個二叉樹是否相同。同樣首先判斷兩個二叉樹是否為空,如果兩個二叉樹都不為空,則從兩個二叉樹的根節點開始廣度優先搜尋。

使用兩個佇列分別儲存兩個二叉樹的節點。初始時將兩個二叉樹的根節點分別加入兩個佇列。每次從兩個佇列各取出乙個節點,進行如下比較操作。

比較兩個節點的值,如果兩個節點的值不相同則兩個二叉樹一定不同;

如果兩個節點的值相同,則判斷兩個節點的子節點是否為空,如果只有乙個節點的左子節點為空,或者只有乙個節點的右子節點為空,則兩個二叉樹的結構不同,因此兩個二叉樹一定不同;

如果兩個節點的子節點的結構相同,則將兩個節點的非空子節點分別加入兩個佇列,子節點加入佇列時需要注意順序,如果左右子節點都不為空,則先加入左子節點,後加入右子節點。

如果搜尋結束時兩個佇列同時為空,則兩個二叉樹相同。如果只有乙個隊列為空,則兩個二叉樹的結構不同,因此兩個二叉樹不同。

class

solution

else

if(p == null || q == null)

queue

queue1 =

newlinkedlist

(); queue

queue2 =

newlinkedlist

(); queue1.

offer

(p);

queue2.

offer

(q);

while

(!queue1.

isempty()

&&!queue2.

isempty()

) treenode left1 = node1.left, right1 = node1.right, left2 = node2.left, right2 = node2.right;

if(left1 == null ^ left2 == null)

if(right1 == null ^ right2 == null)

if(left1 != null)

if(right1 != null)

if(left2 != null)

if(right2 != null)

}return queue1.

isempty()

&& queue2.

isempty()

;}}

LeetCode 100 相同的樹

題目描述 給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。示例 輸入 1 1 2 3 2 3 1,2,3 1,2,3 輸出 true輸入 1 1 2 2 1,2 1,null,2 輸出 false輸入 1 1 2 1 1 2 1,2,...

LeetCode 100 相同的樹

給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。示例 1 輸入 1 1 2 3 2 3 1,2,3 1,2,3 輸出 true示例 2 輸入 1 1 2 2 1,2 1,null,2 輸出 false示例 3 輸入 1 1 2 1 1...

leetcode100 相同的樹

給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。示例 1 輸入 1 1 2 3 2 3 1,2,3 1,2,3 輸出 true 示例 2 輸入 1 1 2 2 1,2 1,null,2 輸出 false 示例 3 輸入 1 1 2 1...