Populating Next Right Pointers in Each Node
Problem
You are given a perfect binary tree where all leaves are on the same level, and every parent has two children. The binary tree has the following definition:
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL
.
Initially, all next pointers are set to NULL
.
Solution Approach
Expected Time complexity:
Click - to see solution code
- C++
class Solution {
map<int, vector<Node*>> mp;
public:
void traversal(Node* root, int h) {
if (!root) return;
mp[h].push_back(root);
traversal(root->left, h + 1);
traversal(root->right, h + 1);
}
Node* connect(Node* root) {
traversal(root, 0);
for (auto i : mp) {
for (int j = 0; j < i.second.size() - 1; j++) {
i.second[j]->next = i.second[j + 1];
}
}
return root;
}
};