设计C++算法判断两个二叉树是否相同
时间: 2024-06-13 14:09:00 浏览: 102
以下是C++中判断两个二叉树是否相同的算法:
1. 递归算法
```C++
bool isSameTree(TreeNode* p, TreeNode* q) {
if (p == nullptr && q == nullptr) {
return true;
}
if (p == nullptr || q == nullptr) {
return false;
}
if (p->val != q->val) {
return false;
}
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}
```
2. 非递归算法
```C++
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 == nullptr && q == nullptr) {
continue;
}
if (p == nullptr || q == nullptr) {
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;
}
```
阅读全文