(85). 27.5. LEVEL ORDER TRAVERSAL (SUM AT Kth LEVEL IN BINARY TREE) - anishsingh90/Data_Structure_And_Algorithm_In_Cpp_github.io GitHub Wiki
//Level Order Traversal
#include <bits/stdc++.h> using namespace std;
struct Node{ int data; struct Node* left; struct Node* right;
Node(int val){
data = val;
left = NULL;
right = NULL;
}
};
//levelOrder Function void printLevelOrder(Node* root){ if(root == NULL){ return; }
queue<Node*> q;
q.push(root);
q.push(NULL);
while(!q.empty()){
Node* node = q.front();
q.pop();
if(node != NULL){
cout<< node->data <<" ";
if(node->left){
q.push(node->left);
}
if(node->right){
q.push(node->right);
}
}
else if(!q.empty()){
q.push(NULL);
}
}
}
int main(){ Node* root = new Node(1); root->left = new Node(2); root->right = new Node(3);
root->left->left = new Node(4);
root->left->right = new Node(5);
root->right->left = new Node(6);
root->right->right = new Node(7);
//Level Order Traversal
cout << "Level Order Traversal: ";
printLevelOrder(root);
return 0;
}
/* OUTPUT: Level Order Traversal: 1 2 3 4 5 6 7 */
//SUM OF NODES AT Kth LEVEL #include <bits/stdc++.h> using namespace std;
struct Node{ int data; struct Node* left; struct Node* right;
Node(int val){
data = val;
left = NULL;
right = NULL;
}
};
//Sum at Kth Level int sumAtK(Node* root, int k){ if(root == NULL){ return -1; } queue<Node*> q; q.push(root); q.push(NULL); int level = 0; int sum = 0;
while(!q.empty()){
Node* node = q.front();
q.pop();
if(node != NULL){
if(level == k){
sum += node->data;
}
if(node->left){
q.push(node->left);
}
if(node->right){
q.push(node->right);
}
}
else if(!q.empty()){
q.push(NULL);
level++;
}
}
return sum;
}
int main(){ Node* root = new Node(1); root->left = new Node(2); root->right = new Node(3);
root->left->left = new Node(4);
root->left->right = new Node(5);
root->right->left = new Node(6);
root->right->right = new Node(7);
//Sum at Kth Level
cout << "Sum at Kth Level: ";
cout << sumAtK(root,2);
return 0;
}
/* OUTPUT: Sum at Kth Level: 22 */