LeetCode 之相同的樹

2021-08-30 08:18:26 字數 1653 閱讀 6503

問題描述:

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

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

示例 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

老規矩 先來自己的,非遞迴實現,佇列層次遍歷比較

/**

* definition for a binary tree node.

* public class treenode

* }*/class solution

return false;

}queue1.add(p);

queue2.add(q);

while (!queue1.isempty())

treenode node1 = queue1.remove();

treenode node2 = queue2.remove();

if (node1.val != node2.val)

if (node1.left != null && node2.left!=null) elseelse

}if (node1.right != null && node2.right!=null) elseelse}}

if(!queue2.isempty())

return true;

}}

再來乙個大神的遞迴實現,

/**

* definition for a binary tree node.

* public class treenode

* }*/class solution else if (p == null || q == null)

boolean left = issametree(p.left, q.left);

boolean right = issametree(p.right, q.right);

if (!left || !right)

return p.val == q.val;

}}

奇怪的是,大神的遞迴比我寫的非遞迴快,讓我難以接受,後來仔細分析,其實有幾點原因,自身寫的判斷條件有些重複累贅,利用佇列,佇列的操作費時,而且最最最重要的就是演算法所傳遞的例子都是比較「小」的樹,如果樹比較深,非遞迴的優勢就能展現出來了,不過low 還是  我low。

leetcode 相同的樹

給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。示例 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...

leetcode 相同的樹c

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

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...