#include <bits/stdc++.h>
using namespace std;
struct Node {
int data;
Node* left;
Node* right;
Node(int val) {
data = val;
left = right = nullptr;
}
};
void inorderRecursive(Node* root) {
if (!root) return;
inorderRecursive(root->left); // visit left subtree
cout << root->data << " "; // visit root
inorderRecursive(root->right); // visit right subtree
}
int main() {
Node* root = new Node(1);
root->left = new Node(2);
root->right = new Node(3);
root->left->left = new Node(4);
root->left->right = new Node(5);
cout << "Inorder Recursive: ";
inorderRecursive(root);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgTm9kZSB7CiAgICBpbnQgZGF0YTsKICAgIE5vZGUqIGxlZnQ7CiAgICBOb2RlKiByaWdodDsKCiAgICBOb2RlKGludCB2YWwpIHsKICAgICAgICBkYXRhID0gdmFsOwogICAgICAgIGxlZnQgPSByaWdodCA9IG51bGxwdHI7CiAgICB9Cn07Cgp2b2lkIGlub3JkZXJSZWN1cnNpdmUoTm9kZSogcm9vdCkgewogICAgaWYgKCFyb290KSByZXR1cm47CgogICAgaW5vcmRlclJlY3Vyc2l2ZShyb290LT5sZWZ0KTsgICAgLy8gdmlzaXQgbGVmdCBzdWJ0cmVlCiAgICBjb3V0IDw8IHJvb3QtPmRhdGEgPDwgIiAiOyAgICAgICAvLyB2aXNpdCByb290CiAgICBpbm9yZGVyUmVjdXJzaXZlKHJvb3QtPnJpZ2h0KTsgICAvLyB2aXNpdCByaWdodCBzdWJ0cmVlCn0KCmludCBtYWluKCkgewogICAgTm9kZSogcm9vdCA9IG5ldyBOb2RlKDEpOwogICAgcm9vdC0+bGVmdCA9IG5ldyBOb2RlKDIpOwogICAgcm9vdC0+cmlnaHQgPSBuZXcgTm9kZSgzKTsKICAgIHJvb3QtPmxlZnQtPmxlZnQgPSBuZXcgTm9kZSg0KTsKICAgIHJvb3QtPmxlZnQtPnJpZ2h0ID0gbmV3IE5vZGUoNSk7CgogICAgY291dCA8PCAiSW5vcmRlciBSZWN1cnNpdmU6ICI7CiAgICBpbm9yZGVyUmVjdXJzaXZlKHJvb3QpOwoKICAgIHJldHVybiAwOwp9