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
void swap(void *a, void *b, size_t size)
ReplyDelete{
char *ca, *cb;
int i;
ca = (char *)a;
cb = (char *)b;
for(i=0;i<size;*(ca+i)^=*(cb+i),*(cb+i)^=*(ca+i),*(ca+i)^=*(cb+i),++i);
}
void pointer can be used to store any kind of address,it is typecasted to char pointer so that one byte at a time can be swapped.
/* Generic Swap macro*/
ReplyDelete#define swap(a, b, type) { type t = a; a = b; b = t; }
#define Swap(X,Y) { __typeof__ (X) T = X; X = Y; Y = T; }
ReplyDeleteint main()
{
int a=10,b=20;
Swap(a,b);
printf("%d %d",a,b);
return 0;
}
__typeof__ is a GNU C extension so we don't even need to pass type as third parameter.but it will be portability issue.
/* Generic Swap macro*/
ReplyDelete#define swap(a, b, type) { type t = a; a = b; b = t; }
will not run .. try it... and try to find the reason :)