Advertisement
HawkeyeHS

Diagonal Traversal

Aug 4th, 2023
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.93 KB | None | 0 0
  1. vector<int> diagonalPath(BinaryTreeNode<int>* root) {
  2.     // Write your code here.
  3.     vector<int>result;
  4.     if(root==NULL)
  5.         return result;
  6.  
  7.     queue<pair<BinaryTreeNode<int>*,pair<int,int>>>q;
  8.     q.push({root, {0, 0}});
  9.  
  10.     map<int,vector<int>>mp;
  11.  
  12.     while(!q.empty())
  13.     {
  14.         int size=q.size();
  15.  
  16.         for(int i=0;i<size;i++)
  17.         {
  18.             BinaryTreeNode<int>* node=q.front().first;
  19.             int level=q.front().second.first;
  20.             int vert=q.front().second.second;
  21.  
  22.             q.pop();
  23.  
  24.             if(node->left)
  25.                 q.push({node->left,{level+1,vert-1}});
  26.  
  27.             if(node->right)
  28.                 q.push({node->right,{level+1,vert+1}});
  29.  
  30.                 mp[abs(vert-level)].push_back(node->data);
  31.            
  32.         }
  33.     }
  34.  
  35.     for (const auto& it : mp) {
  36.         result.insert(result.end(), it.second.begin(), it.second.end());
  37.     }
  38.  
  39.     return result;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement