I used a queue for storing the nodes of a tree.first the root is pushed in the queue.now till the queue is not empty it pops one node(say x) from the queue and push(x->left and x->right)into the queue only if they are not null.the elements popped out can make a linked list.
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
llist(struct node *root)
ReplyDelete{
struct node *r,*p;
struct node *head=NULL;
if(root==NULL)
return;
else{
push(queue,root);
while(queue is not empty)
{
r=pop(queue);
if(r->left!=NULL)
push(queue,r->left);
if(r->right!=NULL)
push(queue,r->right);
if(head==NULL)
{
head=r;
r->next=NULL;
p=r;
}
else{
p->next=r;
r->next=NULL;
p=r;
}
}
}
return;
}
@kamakshi can you explain your approach,because reading code is little bit time taking.:)
ReplyDeleteI used a queue for storing the nodes of a tree.first the root is pushed in the queue.now till the queue is not empty it pops one node(say x) from the queue and push(x->left and x->right)into the queue only if they are not null.the elements popped out can make a linked list.
ReplyDelete