#include<bits/stdc++.h>
using namespace std;
struct node{
int data;
node* left, *right;
};
node* newNode(int data){
node* root = new node();
root->data = data;
root->left = root->right = NULL;
return root;
}
vector<int> v;
void printPath(node* root){
if(root==NULL)return;
v.push_back(root->data);
if(root->left==NULL && root->right==NULL){
for(int i=0; i<v.size(); i++)cout<<v[i]<<" ";
cout<<endl;
printPath(root->left);
v.pop_back();
printPath(root->right);
v.pop_back();
}
}
int main(void){
node* root = newNode(1);
root->left = newNode(2);
root->right = newNode(3);
root->left->left = newNode(4);
root->left->right = newNode(5);
root->left->right->left = newNode(6);
root->left->right->right = newNode(7);
printPath(root);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IG5vZGV7CglpbnQgZGF0YTsKCW5vZGUqIGxlZnQsICpyaWdodDsKfTsKbm9kZSogbmV3Tm9kZShpbnQgZGF0YSl7Cglub2RlKiByb290ID0gbmV3IG5vZGUoKTsKCXJvb3QtPmRhdGEgPSBkYXRhOwoJcm9vdC0+bGVmdCA9IHJvb3QtPnJpZ2h0ID0gTlVMTDsKCXJldHVybiByb290Owp9CnZlY3RvcjxpbnQ+IHY7CnZvaWQgcHJpbnRQYXRoKG5vZGUqIHJvb3QpewoJaWYocm9vdD09TlVMTClyZXR1cm47Cgl2LnB1c2hfYmFjayhyb290LT5kYXRhKTsKCQoJaWYocm9vdC0+bGVmdD09TlVMTCAmJiByb290LT5yaWdodD09TlVMTCl7CgkJZm9yKGludCBpPTA7IGk8di5zaXplKCk7IGkrKyljb3V0PDx2W2ldPDwiICI7CgkJY291dDw8ZW5kbDsKICAgICAgICAgcHJpbnRQYXRoKHJvb3QtPmxlZnQpOwoJCXYucG9wX2JhY2soKTsKCQlwcmludFBhdGgocm9vdC0+cmlnaHQpOwoJCXYucG9wX2JhY2soKTsKCQoJfQp9CmludCBtYWluKHZvaWQpewoJbm9kZSogcm9vdCA9IG5ld05vZGUoMSk7Cglyb290LT5sZWZ0ID0gbmV3Tm9kZSgyKTsKCXJvb3QtPnJpZ2h0ID0gbmV3Tm9kZSgzKTsKCXJvb3QtPmxlZnQtPmxlZnQgPSBuZXdOb2RlKDQpOwoJcm9vdC0+bGVmdC0+cmlnaHQgPSBuZXdOb2RlKDUpOwoJcm9vdC0+bGVmdC0+cmlnaHQtPmxlZnQgPSBuZXdOb2RlKDYpOwoJcm9vdC0+bGVmdC0+cmlnaHQtPnJpZ2h0ID0gbmV3Tm9kZSg3KTsKCXByaW50UGF0aChyb290KTsKCXJldHVybiAwOwp9