From 4a233d081e22d6bef8c2a5d44fe51273d4f21d52 Mon Sep 17 00:00:00 2001 From: Sudhanshu-Sharma-22 <104524090+Sudhanshu-Sharma-22@users.noreply.github.com> Date: Mon, 14 Aug 2023 19:19:38 +0530 Subject: [PATCH] Create Level_Order Traversal.cpp --- Tree/Level_Order Traversal.cpp | 93 ++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 Tree/Level_Order Traversal.cpp diff --git a/Tree/Level_Order Traversal.cpp b/Tree/Level_Order Traversal.cpp new file mode 100644 index 0000000..671ee0f --- /dev/null +++ b/Tree/Level_Order Traversal.cpp @@ -0,0 +1,93 @@ +// Recursive CPP program for level +// order traversal of Binary Tree +#include +using namespace std; + +// A binary tree node has data, +// pointer to left child +// and a pointer to right child +class node { +public: + int data; + node *left, *right; +}; + +// Function prototypes +void printCurrentLevel(node* root, int level); +int height(node* node); +node* newNode(int data); + +// Function to print level order traversal a tree +void printLevelOrder(node* root) +{ + int h = height(root); + int i; + for (i = 1; i <= h; i++) + printCurrentLevel(root, i); +} + +// Print nodes at a current level +void printCurrentLevel(node* root, int level) +{ + if (root == NULL) + return; + if (level == 1) + cout << root->data << " "; + else if (level > 1) { + printCurrentLevel(root->left, level - 1); + printCurrentLevel(root->right, level - 1); + } +} + +// Compute the "height" of a tree -- the number of +// nodes along the longest path from the root node +// down to the farthest leaf node. +int height(node* node) +{ + if (node == NULL) + return 0; + else { + + // Compute the height of each subtree + int lheight = height(node->left); + int rheight = height(node->right); + + // Use the larger one + if (lheight > rheight) { + return (lheight + 1); + } + else { + return (rheight + 1); + } + } +} + +// Helper function that allocates +// a new node with the given data and +// NULL left and right pointers. +node* newNode(int data) +{ + node* Node = new node(); + Node->data = data; + Node->left = NULL; + Node->right = NULL; + + return (Node); +} + +// Driver code +int main() +{ + node* root = newNode(1); + root->left = newNode(2); + root->right = newNode(3); + root->left->left = newNode(4); + root->left->right = newNode(5); + + cout << "Level Order traversal of binary tree is \n"; + printLevelOrder(root); + + return 0; +} + +// This code is contributed by Sudhanshu-Sharma-22