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
//linked list
ReplyDelete#include
using namespace std;
/*********************************************************************************/
struct node{
struct node* next;
int data;
};
/*********************************************************************************/
/*********************************************************************************/
void create_linked_list(struct node** head,struct node** tail,int data)
{
if(*tail==NULL)
{
(*tail) =new node;
(*tail)->next=NULL;
(*tail)->data=data;
*head=*tail;
}
else
{
(*tail)->next=new node;
(*tail)->next->next=NULL;
(*tail)->next->data=data;
(*tail)=(*tail)->next;
}
}
/*********************************************************************************/
void traverse_linked_list(struct node* head)
{
cout<<"\n";
while(head!=NULL)
{
cout<data<<" ";
head=head->next;
}
cout<<"\n";
}
/*********************************************************************************/
void delete_linked_list(struct node* head)
{
struct node* prev=head;
while(head!=NULL)
{
prev=head;
head=head->next;
delete(prev);
}
}
/*********************************************************************************/
void remove_duplicates_from_sorted_list(struct node* head)
{
if(head->next==NULL)
return;
struct node* current=head->next;
struct node* previous=head;
while(current!=NULL)
{
if(current->data==previous->data)
{
previous->next=current->next;
delete(current);
current=previous->next;
}
else
{
previous=current;
current=current->next;
}
}
}
/**********************************************************************************/
int main()
{
struct node*first=NULL,*last=NULL;
create_linked_list(&first,&last,6);
create_linked_list(&first,&last,6);
create_linked_list(&first,&last,6);
create_linked_list(&first,&last,6);
create_linked_list(&first,&last,6);
create_linked_list(&first,&last,1);
traverse_linked_list(first);
remove_duplicates_from_sorted_list(first);
traverse_linked_list(first);
delete_linked_list(first);
system("pause");
return 0;
}