From 1084b13f3d77752e2eadb29726e0ebe0d4c0334b Mon Sep 17 00:00:00 2001 From: Deepak Singh Date: Mon, 4 Oct 2021 01:38:35 +0530 Subject: [PATCH] Added Vertical Order Traversal of a Binary Tree (LeetCode) --- VerticalOrderTraversal.cpp | 71 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 VerticalOrderTraversal.cpp diff --git a/VerticalOrderTraversal.cpp b/VerticalOrderTraversal.cpp new file mode 100644 index 0000000..74c36a0 --- /dev/null +++ b/VerticalOrderTraversal.cpp @@ -0,0 +1,71 @@ +// Vertical Order Traversal of a Binary Tree (LeetCode) +// Difficulty - Hard +//https://leetcode.com/problems/vertical-order-traversal-of-a-binary-tree/ + +class Solution +{ +public: + vector> verticalTraversal(TreeNode *root) + { + vector> ans; + if (root == NULL) + return ans; + map>> m; + queue>> q; + + pair> roo; + roo.first = root; + roo.second.first = 0; + roo.second.second = 0; + + q.push(roo); + while (!q.empty()) + { + pair> p = q.front(); + q.pop(); + + m[p.second.first][p.second.second].push_back(p.first->val); + // cout<left) + { + pair> pp; + pp.first = p.first->left; + pp.second.first = p.second.first - 1; + pp.second.second = p.second.second + 1; + + q.push(pp); + } + if (p.first->right) + { + pair> pp; + pp.first = p.first->right; + pp.second.first = p.second.first + 1; + pp.second.second = p.second.second + 1; + + q.push(pp); + } + } + + map>>::iterator itr; + + for (itr = m.begin(); itr != m.end(); ++itr) + { + + vector a; + map>::iterator itrr; + for (itrr = itr->second.begin(); itrr != itr->second.end(); ++itrr) + { + sort(itrr->second.begin(), itrr->second.end()); + for (int i = 0; i < itrr->second.size(); i++) + { + a.push_back(itrr->second[i]); + } + } + + ans.push_back(a); + } + + return ans; + } +}; \ No newline at end of file