You are viewing a single comment's thread. Return to all comments →
class Node { public: int data; Node* left; Node* right; Node(int d) { data = d; left = NULL; right = NULL; } }; void InOrderTraverse(Node* root, vector<int>& ret) { if(!root) { return; } InOrderTraverse(root->left, ret); ret.push_back(root->data); InOrderTraverse(root->right, ret); } vector<vector<int>> swapNodes(vector<vector<int>> indexes, vector<int> queries) { map<int, vector<Node*>> hnodes; Node* root = nullptr; root = new Node(1); int h = 1; hnodes[h].push_back(root); int i = 0; while(i<indexes.size()) { h++; for(auto& j : hnodes[h-1]) { if(indexes[i][0] != -1) { j->left = new Node(indexes[i][0]); hnodes[h].push_back(j->left); } if(indexes[i][1] != -1) { j->right = new Node(indexes[i][1]); hnodes[h].push_back(j->right); } i++; } } vector<vector<int>> ret; for(auto& iq: queries) { for(auto& ipair: hnodes) { if(ipair.first % iq == 0) { for(auto& inode : ipair.second) { Node* temp = inode->left; inode->left = inode->right; inode->right = temp; } } } vector<int> kv; InOrderTraverse(root, kv); ret.push_back(kv); } return ret; }
Seems like cookies are disabled on this browser, please enable them to open this website
Swap Nodes [Algo]
You are viewing a single comment's thread. Return to all comments →