100. 相同的树
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/same-tree/submissions/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
题目分析
注意:相同的不是对称的
可参考101. 对称二叉树
- 递归法
class Solution {
public:
bool compare(TreeNode* left, TreeNode* right){
if(left == nullptr && right ==nullptr){
return true;
}else if(left != nullptr && right != nullptr){
if(left->val == right->val){
bool outside = compare(left->left, right->left);
bool insize = compare(left->right, right->right);
return outside && insize;
}else{
return false;
}
}else{
return false;
}
}
bool isSameTree(TreeNode* p, TreeNode* q) {
return compare(p ,q);
}
};
- 迭代法
不用考虑每层几个(n)
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
queue<TreeNode*> que;
if(p != nullptr && q != nullptr){
que.push(p);
que.push(q);
}else if(p == nullptr && q == nullptr){
return true;
}else{
return false;
}
while(!que.empty()){
TreeNode* leftNode = que.front(); que.pop();
TreeNode* rightNode = que.front(); que.pop();
if(leftNode == nullptr && rightNode == nullptr){
//不处理
continue;
}
if(leftNode == nullptr || rightNode == nullptr) return false;
if(leftNode->val != rightNode->val) return false;
que.push(leftNode->left);
que.push(rightNode->left);
que.push(leftNode->right);
que.push(rightNode->right);
}
return true;
}
};