Leetcode No 100 相同的樹

2021-10-19 11:27:32 字數 1182 閱讀 5783

給你兩棵二叉樹的根節點 p 和 q ,編寫乙個函式來檢驗這兩棵樹是否相同。

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

示例 1:

輸入:p = [1,2,3], q = [1,2,3]

輸出:true

示例 2:

輸入:p = [1,2], q = [1,null,2]

輸出:false

示例 3:

輸入:p = [1,2,1], q = [1,1,2]

輸出:false

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

如果兩個二叉樹都不為空,兩棵二叉樹相同需要滿足三個條件

1、根節點值相同

2、左子樹相同

3、右子樹相同

其中2,3條件可以通過遞迴來檢驗

/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class solution

if(p==nullptr||q==nullptr)

if(p->val==q->val&&issametree(p->left,q->left)&&issametree(p->right,q->right))

else}};

時間複雜度:o(min(m,n)),其中 m 和 n分別是兩個二叉樹的節點數。對兩個二叉樹同時進行深度優先搜尋,只有當兩個二叉樹中的對應節點都不為空時才會訪問到該節點,因此被訪問到的節點數不會超過較小的二叉樹的節點數。

空間複雜度:o(min(m,n)),其中 m 和 n 分別是兩個二叉樹的節點數。空間複雜度取決於遞迴呼叫的層數,遞迴呼叫的層數不會超過較小的二叉樹的最大高度,最壞情況下,二叉樹的高度等於節點數。

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

100 相同的樹

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

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