Given a Binary Tree, find vertical sum of the nodes that are in same vertical line. Print all sums through different vertical lines. Examples: 1 / \ 2 3 / \ / \ 4 5 6 7 The tree has 5 vertical lines Vertical-Line-1 has only one node 4 => vertical sum is 4 Vertical-Line-2: has only one node 2=> vertical sum is 2 Vertical-Line-3: has three nodes: 1,5,6 => vertical sum is 1+5+6 = 12 Vertical-Line-4: has only one node 3 => vertical sum is 3 Vertical-Line-5: has only one node 7 => vertical sum is 7 So expected output is 4, 2, 12, 3 and 7
for(i=0;i<7;i++)
ReplyDelete{
for(j=0;j<=i;j++)
{
sum[j]=sum[j]+a[i];
if(sum[j]==0)
{
flag=1;
break;
}
}
if(flag==1)
break;
}
printf("The subarray is from %d to %d",j,i);
this solution has o(n^2) running time,try to optimize it.
ReplyDeleteyou can create a temp array storing consecutive sum of elements.
ReplyDeletetemp[]={-3,-1,3,-3,-11,-1,10}
insert elements in hash if collision occurs then elements between these two indices sum zero.