給你兩棵二叉樹的根節點 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...