/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
//如果都爲NULL,則相同樹,返回true.
if(p==NULL && q==NULL) return true;
//只有一個爲NULL,返回false.
if(p==NULL || q==NULL) return false;
//節點不同返回false.
if(p->val!=q->val) return false;
//返回左右子樹相不相同.
return isSameTree(p->left,q->left) &&
isSameTree(p->right, q->right);
}
};
1.
複雜度分析
時間複雜度 : O(N),其中 N 是樹的結點數,因爲每個結點都訪問一次。
空間複雜度 : 最優情況(完全平衡二叉樹)時爲 O(log(N)),最壞情況下(完全不平衡二叉樹)時爲 O(N),用於維護遞歸棧。