same-tree 1.0.0
Same Tree
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1#include <bits/stdc++.h>
2
3using namespace std;
4
5struct TreeNode
6{
7 int val;
10 TreeNode() : val(0), left(nullptr), right(nullptr) {}
11 TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
13};
14
16{
17public:
19 {
20 if (!p && !q)
21 return true;
22 else if ((p && !q) || (!p && q))
23 return false;
24 queue<pair<TreeNode*, TreeNode*>> nodes;
25 nodes.push({p, q});
26 while (!nodes.empty())
27 {
28 auto [pt, qt] = nodes.front();
29 nodes.pop();
30
31 if ((pt && !qt) || (!pt && qt) || pt->val != qt->val)
32 return false;
33 if (pt->left || qt->left)
34 nodes.push({pt->left, qt->left});
35 if (pt->right || qt->right)
36 nodes.push({pt->right, qt->right});
37 }
38 return true;
39 }
40};
41
42int main()
43{
44 TreeNode* p2 = new TreeNode(2), * p3 = new TreeNode(3);
45 TreeNode* p = new TreeNode(1, p2, p3);
46 TreeNode* q2 = new TreeNode(2), * q3 = new TreeNode(3);
47 TreeNode* q = new TreeNode(1, q2, q3);
48 cout << "is the same tree: " << Solution().isSameTree(p, q) << '\n';
49 delete p2; delete p3; delete p; delete q2; delete q3; delete q;
50 return 0;
51}
bool isSameTree(TreeNode *p, TreeNode *q)
Definition main.cpp:18
int main()
Definition main.cpp:42
int val
Definition main.cpp:7
TreeNode * left
Definition main.cpp:8
TreeNode(int x, TreeNode *left, TreeNode *right)
Definition main.cpp:12
TreeNode * right
Definition main.cpp:9
TreeNode(int x)
Definition main.cpp:11
TreeNode()
Definition main.cpp:10