From c78b741adf775ba5f63ed7183b3bbeeea11a9162 Mon Sep 17 00:00:00 2001 From: Ashish Kumar <114761660+Ashish16Kumar@users.noreply.github.com> Date: Sun, 9 Oct 2022 17:02:23 +0530 Subject: [PATCH] Create Binary Tree Zigzag level order traversal --- .../Binary Tree Zigzag level order traversal | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Binary Tree/Binary Tree Zigzag level order traversal diff --git a/Binary Tree/Binary Tree Zigzag level order traversal b/Binary Tree/Binary Tree Zigzag level order traversal new file mode 100644 index 0000000..3b3756d --- /dev/null +++ b/Binary Tree/Binary Tree Zigzag level order traversal @@ -0,0 +1,57 @@ +/* This is the Node class definition + +class Node { +public: + Node* left; + Node* right; + int data; + + Node(int data) { + this->left = NULL; + this->right = NULL; + this->data = data; + } +}; +*/ + +vector zigzagLevelOrderTraversal(Node* root) { + vector traversal; + queue treeNodes; + stack currLevelNodes; + treeNodes.push(root); + int leftToRight = 1; + while (!treeNodes.empty()) { + if (leftToRight == 1) { + int n = treeNodes.size(); + for (int i = 0; i < n; i++) { + Node* currentNode = treeNodes.front(); + treeNodes.pop(); + traversal.push_back(currentNode->data); + if (currentNode->left != NULL) { + treeNodes.push(currentNode->left); + currLevelNodes.push(currentNode->left); + } + if (currentNode->right != NULL) { + treeNodes.push(currentNode->right); + currLevelNodes.push(currentNode->right); + } + } + } else { + int n = treeNodes.size(); + for (int i = 0; i < n; i++) { + Node* currentNode = treeNodes.front(); + treeNodes.pop(); + traversal.push_back(currLevelNodes.top()->data); + currLevelNodes.pop(); + if (currentNode->left != NULL) { + treeNodes.push(currentNode->left); + } + if (currentNode->right != NULL) { + treeNodes.push(currentNode->right); + } + } + } + leftToRight = 1 - leftToRight; + } + return traversal; +}