Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- class Node{
- public:
- int data;
- Node *left,*right;
- Node(int key){
- data=key;
- left=NULL;
- right=NULL;
- }
- };
- class LLNode{
- public:
- int data;
- LLNode *prev,*next;
- LLNode(int key){
- data=key;
- prev=NULL;
- next=NULL;
- }
- };
- void Add(Node* root,LLNode *temp){
- if(root==NULL)
- return;
- temp->data+=root->data;
- if(root->left!=NULL){
- if(temp->prev==NULL){
- temp->prev=new LLNode(0);
- (temp->prev)->next=temp;
- }
- Add(root->left,temp->prev);
- }
- if(root->right!=NULL){
- if(temp->next==NULL){
- temp->next=new LLNode(0);
- (temp->next)->prev=temp;
- }
- Add(root->right,temp->next);
- }
- }
- void VerticalSum(Node* root){
- if(root==NULL)
- return;
- LLNode* temp= new LLNode(0);
- Add(root,temp);
- while(temp->prev!=NULL)
- temp=temp->prev;
- while(temp!=NULL){
- if(temp->data!=0)
- cout<<" "<<temp->data;
- temp=temp->next;
- }
- }
- int main(){
- Node* root=NULL;
- Node* newnode=new Node(1);
- root=newnode;
- root->left=new Node(9);
- root->right=new Node(3);
- (root->left)->left=new Node(2);
- (root->right)->left=new Node(8);
- (root->right)->right=new Node(4);
- VerticalSum(root);
- return 0;
- }
Add Comment
Please, Sign In to add comment