#include <bits/stdc++.h>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right)
: val(x), left(left), right(right) {}
};
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> result;
inOrder(root, result);
return result;
}
private:
void inOrder(TreeNode* node, vector<int>& result) {
if (!node) return;
inOrder(node->left, result);
result.push_back(node->val);
inOrder(node->right, result);
}
};
int main() {
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
Solution sol;
vector<int> result = sol.inorderTraversal(root);
cout << "Inorder traversal: ";
for (int val : result) {
cout << val << " ";
}
cout << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgVHJlZU5vZGUgewogICAgaW50IHZhbDsKICAgIFRyZWVOb2RlICpsZWZ0OwogICAgVHJlZU5vZGUgKnJpZ2h0OwoKICAgIFRyZWVOb2RlKCkgOiB2YWwoMCksIGxlZnQobnVsbHB0ciksIHJpZ2h0KG51bGxwdHIpIHt9CiAgICBUcmVlTm9kZShpbnQgeCkgOiB2YWwoeCksIGxlZnQobnVsbHB0ciksIHJpZ2h0KG51bGxwdHIpIHt9CiAgICBUcmVlTm9kZShpbnQgeCwgVHJlZU5vZGUgKmxlZnQsIFRyZWVOb2RlICpyaWdodCkKICAgICAgICA6IHZhbCh4KSwgbGVmdChsZWZ0KSwgcmlnaHQocmlnaHQpIHt9Cn07CgpjbGFzcyBTb2x1dGlvbiB7CnB1YmxpYzoKICAgIHZlY3RvcjxpbnQ+IGlub3JkZXJUcmF2ZXJzYWwoVHJlZU5vZGUqIHJvb3QpIHsKICAgICAgICB2ZWN0b3I8aW50PiByZXN1bHQ7CiAgICAgICAgaW5PcmRlcihyb290LCByZXN1bHQpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9Cgpwcml2YXRlOgogICAgdm9pZCBpbk9yZGVyKFRyZWVOb2RlKiBub2RlLCB2ZWN0b3I8aW50PiYgcmVzdWx0KSB7CiAgICAgICAgaWYgKCFub2RlKSByZXR1cm47CiAgICAgICAgaW5PcmRlcihub2RlLT5sZWZ0LCByZXN1bHQpOwogICAgICAgIHJlc3VsdC5wdXNoX2JhY2sobm9kZS0+dmFsKTsKICAgICAgICBpbk9yZGVyKG5vZGUtPnJpZ2h0LCByZXN1bHQpOwogICAgfQp9OwoKaW50IG1haW4oKSB7CiAgICAKCiAgICBUcmVlTm9kZSogcm9vdCA9IG5ldyBUcmVlTm9kZSgxKTsKICAgIHJvb3QtPmxlZnQgPSBuZXcgVHJlZU5vZGUoMik7CiAgICByb290LT5yaWdodCA9IG5ldyBUcmVlTm9kZSgzKTsKICAgIHJvb3QtPmxlZnQtPmxlZnQgPSBuZXcgVHJlZU5vZGUoNCk7CiAgICByb290LT5sZWZ0LT5yaWdodCA9IG5ldyBUcmVlTm9kZSg1KTsKCiAgICBTb2x1dGlvbiBzb2w7CiAgICB2ZWN0b3I8aW50PiByZXN1bHQgPSBzb2wuaW5vcmRlclRyYXZlcnNhbChyb290KTsKCiAgICBjb3V0IDw8ICJJbm9yZGVyIHRyYXZlcnNhbDogIjsKICAgIGZvciAoaW50IHZhbCA6IHJlc3VsdCkgewogICAgICAgIGNvdXQgPDwgdmFsIDw8ICIgIjsKICAgIH0KICAgIGNvdXQgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=