#include<bits/stdc++.h>
using namespace std;
struct node
{
int data;
struct node* left;
struct node* right;
};
void printPathsRecur(struct node* node, int path[], int pathLen);
void printArray(int ints[], int len);
void printPaths(struct node* node)
{
int path[1000];
printPathsRecur(node, path, 0);
}
void printPathsRecur(struct node* node, int path[], int pathLen)
{
if (node==NULL)
return;
path[pathLen] = node->data;
pathLen++;
if (node->left==NULL && node->right==NULL)
{
printArray(path, pathLen);
}
else
{
printPathsRecur(node->left, path, pathLen);
printPathsRecur(node->right, path, pathLen);
}
}
void printArray(int ints[], int len)
{
int i;
for (i=0; i<len; i++)
{
printf("%d ", ints[i]);
}
printf("\n");
}
struct node* newnode(int data)
{
struct node* node = (struct node*)
malloc(sizeof(struct node));
node->data = data;
node->left = NULL;
node->right = NULL;
return(node);
}
int main()
{
/* Constructed binary tree is
6
/ \
3 5
/ \ /
2 5 4
/\
7 4
*/
struct node *root = newnode(6);
root->left = newnode(3);
root->right = newnode(5);
root->left->left = newnode(2);
root->left->right = newnode(5);
root->left->right->left=newnode(7);
root->left->right->right=newnode(4);
root->right->left = newnode(4);
printPaths(root);
getchar();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAKc3RydWN0IG5vZGUKewogICBpbnQgZGF0YTsKICAgc3RydWN0IG5vZGUqIGxlZnQ7CiAgIHN0cnVjdCBub2RlKiByaWdodDsKfTsKIAp2b2lkIHByaW50UGF0aHNSZWN1cihzdHJ1Y3Qgbm9kZSogbm9kZSwgaW50IHBhdGhbXSwgaW50IHBhdGhMZW4pOwp2b2lkIHByaW50QXJyYXkoaW50IGludHNbXSwgaW50IGxlbik7CnZvaWQgcHJpbnRQYXRocyhzdHJ1Y3Qgbm9kZSogbm9kZSkgCnsKICBpbnQgcGF0aFsxMDAwXTsKICBwcmludFBhdGhzUmVjdXIobm9kZSwgcGF0aCwgMCk7Cn0KIAp2b2lkIHByaW50UGF0aHNSZWN1cihzdHJ1Y3Qgbm9kZSogbm9kZSwgaW50IHBhdGhbXSwgaW50IHBhdGhMZW4pIAp7CiAgaWYgKG5vZGU9PU5VTEwpIAogICAgcmV0dXJuOwogIHBhdGhbcGF0aExlbl0gPSBub2RlLT5kYXRhOwogIHBhdGhMZW4rKzsKICBpZiAobm9kZS0+bGVmdD09TlVMTCAmJiBub2RlLT5yaWdodD09TlVMTCkgCiAgewogICAgcHJpbnRBcnJheShwYXRoLCBwYXRoTGVuKTsKICB9CiAgZWxzZQogIHsKICAgIHByaW50UGF0aHNSZWN1cihub2RlLT5sZWZ0LCBwYXRoLCBwYXRoTGVuKTsKICAgIHByaW50UGF0aHNSZWN1cihub2RlLT5yaWdodCwgcGF0aCwgcGF0aExlbik7CiAgfQp9CnZvaWQgcHJpbnRBcnJheShpbnQgaW50c1tdLCBpbnQgbGVuKSAKewogIGludCBpOwogIGZvciAoaT0wOyBpPGxlbjsgaSsrKSAKICB7CiAgICBwcmludGYoIiVkICIsIGludHNbaV0pOwogIH0KICBwcmludGYoIlxuIik7Cn0gICAgCnN0cnVjdCBub2RlKiBuZXdub2RlKGludCBkYXRhKQp7CiAgc3RydWN0IG5vZGUqIG5vZGUgPSAoc3RydWN0IG5vZGUqKQogICAgICAgICAgICAgICAgICAgICAgIG1hbGxvYyhzaXplb2Yoc3RydWN0IG5vZGUpKTsKICBub2RlLT5kYXRhID0gZGF0YTsKICBub2RlLT5sZWZ0ID0gTlVMTDsKICBub2RlLT5yaWdodCA9IE5VTEw7CiAgCiAgcmV0dXJuKG5vZGUpOwp9CmludCBtYWluKCkKeyAKICAKICAvKiBDb25zdHJ1Y3RlZCBiaW5hcnkgdHJlZSBpcwogICAgICAgICAgICA2CiAgICAgICAgICAvICAgXAogICAgICAgIDMgICAgICA1CiAgICAgIC8gIFwgICAgLwogICAgIDIgICAgIDUgIDQKICAgICAgICAgICAvXAogICAgICAgICAgNyAgNAogICAgCiAgKi8KICAKICBzdHJ1Y3Qgbm9kZSAqcm9vdCA9IG5ld25vZGUoNik7CiAgcm9vdC0+bGVmdCAgICAgICAgPSBuZXdub2RlKDMpOwogIHJvb3QtPnJpZ2h0ICAgICAgID0gbmV3bm9kZSg1KTsKICByb290LT5sZWZ0LT5sZWZ0ICA9IG5ld25vZGUoMik7CiAgcm9vdC0+bGVmdC0+cmlnaHQgPSBuZXdub2RlKDUpOwogIHJvb3QtPmxlZnQtPnJpZ2h0LT5sZWZ0PW5ld25vZGUoNyk7CiAgcm9vdC0+bGVmdC0+cmlnaHQtPnJpZ2h0PW5ld25vZGUoNCk7CiAgcm9vdC0+cmlnaHQtPmxlZnQgPSBuZXdub2RlKDQpOwogIAogIHByaW50UGF0aHMocm9vdCk7CiAgCiAgZ2V0Y2hhcigpOwogIHJldHVybiAwOwp9