struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
};
int depth(TreeNode *node)
{
if(node==NULL)
return 0;
return 1+max(depth(node->left),depth(node->right));
}
void print(int *path,int start ,int end)
{
for(int i=start;i<=end;i++)
{
cout<<path[i]<<" ";
}
cout<<endl;
}
void findSum(TreeNode *node,int sum,int* path,int level)
{
if(node==NULL)
return;
path[level]=node->val;
int t=0;
for(int i=level;i>=0;i--)
{
t+=path[i];
if(t==sum)
print(path,i,level);
}
findSum(node->left,sum,path,level+1);
findSum(node->right,sum,path,level+1);
path[level]=INT_MIN;
}
void findSum(TreeNode *node,int sum)
{
int depth1=depth(node);
int *path=new int[depth1];
findSum(node,sum,path,0);
}
{
int val;
TreeNode *left;
TreeNode *right;
};
int depth(TreeNode *node)
{
if(node==NULL)
return 0;
return 1+max(depth(node->left),depth(node->right));
}
void print(int *path,int start ,int end)
{
for(int i=start;i<=end;i++)
{
cout<<path[i]<<" ";
}
cout<<endl;
}
void findSum(TreeNode *node,int sum,int* path,int level)
{
if(node==NULL)
return;
path[level]=node->val;
int t=0;
for(int i=level;i>=0;i--)
{
t+=path[i];
if(t==sum)
print(path,i,level);
}
findSum(node->left,sum,path,level+1);
findSum(node->right,sum,path,level+1);
path[level]=INT_MIN;
}
void findSum(TreeNode *node,int sum)
{
int depth1=depth(node);
int *path=new int[depth1];
findSum(node,sum,path,0);
}