/**
* 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),用于维护递归栈。