Added level order traversal in Binary trees (#153)

* added max subarray sum

* added pre,in,post traversals

* Update pre-in-post-traversal.cpp

formatted the output

* Update pre-in-post-traversal.cpp

formatted output

Co-authored-by: Arsenic <54987647+Arsenic-ATG@users.noreply.github.com>
pull/155/head
Ritish Sehgal 2021-04-10 14:41:47 +05:30 committed by GitHub
parent f515542235
commit c08e033754
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 75 additions and 0 deletions

View File

@ -3,3 +3,4 @@
### C or C++ ### C or C++
1. [Pre, In & Post Order Traversals](c-or-cpp/pre-in-post-traversal.cpp) 1. [Pre, In & Post Order Traversals](c-or-cpp/pre-in-post-traversal.cpp)
2. [Level Order Traversal](c-or-cpp/level-order-traversal.cpp)

View File

@ -0,0 +1,74 @@
#include<iostream>
#include<queue>
#define endl "\n"
using namespace std;
// Basic Structure of a Tree
struct Node{
int data;
struct Node *left;
struct Node *right;
Node(int val){
data = val;
left = NULL;
right = NULL;
}
};
/* Level order Traversal of a Binary Tree using Queue */
/* Complexity : O(n) */
// Here NULLs are used to keep track of levels
void level_order(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);
}
}
cout<<endl;
}
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->right = new Node(7);
/*
1
/ \
2 3
/ \ \
4 5 7
Expected-> level-order : 1,2,3,4,5,7
*/
cout<<"Level Order is : ";
level_order(root);
return 0;
}