#include <iostream>
#include<stack>
using namespace std;
struct node
{
int data;
struct node *left;
struct node *right;
};
struct node *newNode(int data)
{
struct node *temp=new struct node;
temp->data=data;
temp->left=NULL;
temp->right=NULL;
return temp;
}
int getHeight(struct node *root)
{
if(root==NULL)
return 0;
int lh=getHeight(root->left);
int rh=getHeight(root->right);
if(lh>rh)
return 1+lh;
else
return 1+rh;
}
void inOrder(struct node *root)
{
stack<struct node *>st;
struct node *curr=root;
int done=1;
while(done)
{
if(curr)
{
st.push(curr);
curr=curr->left;
}
else
{
if(!st.empty())
{
curr=st.top();
st.pop();
cout<<curr->data<<" ";
curr=curr->right;
}
else
done=0;
}
}
}
int main() {
struct node *root = newNode(1);
root->left = newNode(2);
root->right = newNode(3);
root->left->left = newNode(4);
root->left->right = newNode(5);
inOrder(root);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxzdGFjaz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IG5vZGUKewoJaW50IGRhdGE7CglzdHJ1Y3Qgbm9kZSAqbGVmdDsKCXN0cnVjdCBub2RlICpyaWdodDsKfTsKc3RydWN0IG5vZGUgKm5ld05vZGUoaW50IGRhdGEpCnsKCXN0cnVjdCBub2RlICp0ZW1wPW5ldyBzdHJ1Y3Qgbm9kZTsKCXRlbXAtPmRhdGE9ZGF0YTsKCXRlbXAtPmxlZnQ9TlVMTDsKCXRlbXAtPnJpZ2h0PU5VTEw7CglyZXR1cm4gdGVtcDsKfQppbnQgZ2V0SGVpZ2h0KHN0cnVjdCBub2RlICpyb290KQp7CglpZihyb290PT1OVUxMKQoJcmV0dXJuIDA7CglpbnQgbGg9Z2V0SGVpZ2h0KHJvb3QtPmxlZnQpOwoJaW50IHJoPWdldEhlaWdodChyb290LT5yaWdodCk7CglpZihsaD5yaCkKCXJldHVybiAxK2xoOwoJZWxzZQoJcmV0dXJuIDErcmg7Cn0Kdm9pZCBpbk9yZGVyKHN0cnVjdCBub2RlICpyb290KQp7CiBzdGFjazxzdHJ1Y3Qgbm9kZSAqPnN0Owogc3RydWN0IG5vZGUgKmN1cnI9cm9vdDsKIGludCBkb25lPTE7CiB3aGlsZShkb25lKQogewogCWlmKGN1cnIpCiAJewogCQlzdC5wdXNoKGN1cnIpOwogCQljdXJyPWN1cnItPmxlZnQ7CiAJfQogCWVsc2UKIAl7CiAJCWlmKCFzdC5lbXB0eSgpKQogCQl7CiAJCQljdXJyPXN0LnRvcCgpOwogCQkJc3QucG9wKCk7CiAJCQljb3V0PDxjdXJyLT5kYXRhPDwiICI7CiAJCQljdXJyPWN1cnItPnJpZ2h0OwogCQl9CiAJCWVsc2UKIAkJZG9uZT0wOwogCX0KIH0KfQppbnQgbWFpbigpIHsKCXN0cnVjdCBub2RlICpyb290ID0gbmV3Tm9kZSgxKTsKICByb290LT5sZWZ0ICAgICAgICA9IG5ld05vZGUoMik7CiAgcm9vdC0+cmlnaHQgICAgICAgPSBuZXdOb2RlKDMpOwogIHJvb3QtPmxlZnQtPmxlZnQgID0gbmV3Tm9kZSg0KTsKICByb290LT5sZWZ0LT5yaWdodCA9IG5ld05vZGUoNSk7IAogCiAgaW5PcmRlcihyb290KTsKICByZXR1cm4gMDsKfQ==