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 inorder(struct node* p)
ReplyDelete{
stack s;
do
{
while(p != NULL)
{
s.push(p);
p = p->left;
}
if(!s.empty())
{
p = s.top();
s.pop();
cout<data<right;
}
}while(!s.empty() || p != NULL);
}
void preorder(struct node* p)
{
stack s;
do
{
while(p != NULL)
{
s.push(p);
cout<data<left;
}
if(!s.empty())
{
p = s.top();
s.pop();
p = p->right;
}
}while(!s.empty() || p != NULL);
}
void postorder(struct node* p)
{
stack s;
do
{
INSERT:
while(p != NULL)
{
s.push(p);
p = p->left;
}
if(!s.empty())
{
p = s.top();
s.pop();
if(p->right == NULL)
cout<data<<endl;
else goto INSERT;
}
}while(!s.empty() || p != NULL);
}