題目:
如果兩個樹在結構上相同,並且節點具有相同的值,則認爲它們是相同的。
示例 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
題解:
思路:
- 傳兩個節點p,q進行比較是否相同。
return true的兩種情況:
- 當p和q節點都爲空時
- 當p->value等於q->value時,繼續比較p孩子和q的孩子(繼續遞歸)
代碼演示:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
if (p == NULL || q == NULL) {
if (p == NULL && q == NULL) return true;
else return false;
}
if (p->val == q->val){
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
} else return false;
}