题目:Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value
该题目的解法代码同样存在递归和迭代这两种版本
递归版本:
// 递归版本,时间复杂度 O(log n)
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if (p != nullptr && q != nullptr) {
if (p -> val == q -> val)
return isSameTree(p -> left, q -> left) && isSameTree(p -> right, q -> right);
else return false;
}
else if (p == nullptr && q == nullptr)
return true;
else return false;
}
};
迭代版本:
// 迭代版本
// 时间复杂度 O(n),空间复杂度 O(log n)
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
stack<TreeNode*> s;
s.push(p);
s.push(q);
while (!s.empty()) {
p = s.top(), s.pop();
q = s.top(), s.pop();
if (!p && !q) continue;
if (!p || !q) return false;
if (p -> val != q -> val) return false;
s.push(p -> left);
s.push(q -> left);
s.push(p -> right);
s.push(q -> right);
}
return true;
}
};