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
int compare (struct node *list1, struct node *list2)
ReplyDelete{
if (list2 == NULL)
return 1;
if (list1 == NULL)
return 0;
if (compare (list1, list2->next))
{
if ((list1)->data == list2->data)
{
(list1) = (list1)->next;
return 1;
}
else return 0;
}
else
return 0;
}
In this solution stack space is used.
ReplyDeletehowever this function returns 1 even if list2 is NULL.
so either check for its length before passing to compare function.