jain12

print vertical sum in a binary tree

Mar 26th, 2020
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. class Node{
  5.   public:
  6.       int data;
  7.       Node *left,*right;
  8.       Node(int key){
  9.         data=key;
  10.         left=NULL;
  11.         right=NULL;
  12.         }
  13.   };
  14.  
  15. class LLNode{
  16.   public:
  17.       int data;
  18.       LLNode *prev,*next;
  19.       LLNode(int key){
  20.         data=key;
  21.         prev=NULL;
  22.         next=NULL;
  23.         }
  24.   };
  25.  
  26. void Add(Node* root,LLNode *temp){
  27.   if(root==NULL)
  28.     return;
  29.   temp->data+=root->data;
  30.   if(root->left!=NULL){
  31.     if(temp->prev==NULL){
  32.       temp->prev=new LLNode(0);
  33.       (temp->prev)->next=temp;
  34.       }
  35.     Add(root->left,temp->prev);
  36.     }
  37.   if(root->right!=NULL){
  38.     if(temp->next==NULL){
  39.       temp->next=new LLNode(0);
  40.       (temp->next)->prev=temp;
  41.       }
  42.     Add(root->right,temp->next);
  43.     }
  44.   }
  45.  
  46. void VerticalSum(Node* root){
  47.  if(root==NULL)
  48.     return;
  49.  LLNode* temp= new LLNode(0);
  50.  Add(root,temp);
  51.  while(temp->prev!=NULL)
  52.     temp=temp->prev;
  53.  while(temp!=NULL){
  54.    if(temp->data!=0)
  55.      cout<<" "<<temp->data;
  56.    temp=temp->next;
  57.    }
  58.  }
  59.  
  60. int main(){
  61.   Node* root=NULL;
  62.   Node* newnode=new Node(1);
  63.   root=newnode;
  64.   root->left=new Node(9);
  65.   root->right=new Node(3);
  66.   (root->left)->left=new Node(2);
  67.   (root->right)->left=new Node(8);
  68.  (root->right)->right=new Node(4);
  69.   VerticalSum(root);
  70.   return 0;
  71.   }
Add Comment
Please, Sign In to add comment