#include <bits/stdc++.h>
using namespace std;
struct Node {
int data;
Node* left;
Node* right;
Node(int val) {
data = val;
left = right = nullptr;
}
};
// Postorder Traversal
void postorder(Node* root) {
if (root == nullptr) return;
postorder(root->left); // Visit left subtree
postorder(root->right); // Visit right subtree
cout << root->data << " "; // Visit root
}
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 << "Postorder Traversal: ";
postorder(root);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgTm9kZSB7CiAgICBpbnQgZGF0YTsKICAgIE5vZGUqIGxlZnQ7CiAgICBOb2RlKiByaWdodDsKCiAgICBOb2RlKGludCB2YWwpIHsKICAgICAgICBkYXRhID0gdmFsOwogICAgICAgIGxlZnQgPSByaWdodCA9IG51bGxwdHI7CiAgICB9Cn07CgovLyBQb3N0b3JkZXIgVHJhdmVyc2FsCnZvaWQgcG9zdG9yZGVyKE5vZGUqIHJvb3QpIHsKICAgIGlmIChyb290ID09IG51bGxwdHIpIHJldHVybjsKCiAgICBwb3N0b3JkZXIocm9vdC0+bGVmdCk7ICAgIC8vIFZpc2l0IGxlZnQgc3VidHJlZQogICAgcG9zdG9yZGVyKHJvb3QtPnJpZ2h0KTsgICAvLyBWaXNpdCByaWdodCBzdWJ0cmVlCiAgICBjb3V0IDw8IHJvb3QtPmRhdGEgPDwgIiAiOyAvLyBWaXNpdCByb290Cn0KCmludCBtYWluKCkgewogICAgTm9kZSogcm9vdCA9IG5ldyBOb2RlKDEpOwogICAgcm9vdC0+bGVmdCA9IG5ldyBOb2RlKDIpOwogICAgcm9vdC0+cmlnaHQgPSBuZXcgTm9kZSgzKTsKICAgIHJvb3QtPmxlZnQtPmxlZnQgPSBuZXcgTm9kZSg0KTsKICAgIHJvb3QtPmxlZnQtPnJpZ2h0ID0gbmV3IE5vZGUoNSk7CgogICAgY291dCA8PCAiUG9zdG9yZGVyIFRyYXZlcnNhbDogIjsKICAgIHBvc3RvcmRlcihyb290KTsKCiAgICByZXR1cm4gMDsKfQ==