Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<queue>
- using namespace std;
- class Node{
- public:
- int data;
- Node *left,*right;
- Node(int key){
- data=key;
- left=NULL;
- right=NULL;
- }
- };
- int MaximumSumLevel(Node *root){
- if(root==NULL)
- return 0;
- queue<Node*>q;
- int max_sum=INT_MIN,curr_sum=0,max_sum_level=0,curr_level=0;
- q.push(root);
- q.push(NULL);
- while(!q.empty()){
- Node *temp=q.front();
- q.pop();
- if(temp!=NULL){
- curr_sum=curr_sum+temp->data;
- if(temp->left!=NULL)
- q.push(temp->left);
- if(temp->right!=NULL)
- q.push(temp->right);
- }
- else{
- curr_level++;
- if(max_sum<curr_sum){
- max_sum=curr_sum;
- max_sum_level=curr_level;
- }
- curr_sum=0;
- if(q.size()>0)
- q.push(NULL);
- }
- }
- cout<<"maximum sum is "<<max_sum;
- return max_sum_level;
- }
- int main(){
- Node *root1=NULL;
- Node *newnode=new Node(1);
- root1=newnode;
- root1->left=new Node(2);
- root1->right=new Node(3);
- (root1->left)->left=new Node(4);
- (root1->right)->right=new Node(5);
- ((root1->left)->left)->left=new Node(6);
- cout<<endl<<"level is "<<MaximumSumLevel(root1);
- return 0;
- }
Add Comment
Please, Sign In to add comment