Cover image for Interview Classic 150 Questions P117 Populating Next Right Pointers in Each Node II

Interview Classic 150 Questions P117 Populating Next Right Pointers in Each Node II


Timeline

Timeline

2025-10-26

init

Level-order traversal

Problem:

Level-order traversal is sufficient

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
/*// Definition for a Node.*/#include <cstddef>class Node {    public:	int val;	Node *left;	Node *right;	Node *next;	Node()		: val(0)		, left(NULL)		, right(NULL)		, next(NULL)	{	}	Node(int _val)		: val(_val)		, left(NULL)		, right(NULL)		, next(NULL)	{	}	Node(int _val, Node *_left, Node *_right, Node *_next)		: val(_val)		, left(_left)		, right(_right)		, next(_next)	{	}};#include <queue>using std::queue;class Solution {    public:	Node *connect(Node *root)	{		if (root == nullptr) {			return root;		}		// Level-order traversal		int i, n;		Node *curr, *last;		queue<Node *> que;		que.push(root);		while (!que.empty()) {			n = que.size();			last = nullptr;			for (i = 0; i < n; i++) {				curr = que.front();				que.pop();				if (last != nullptr)					last->next = curr;								if (curr->left != nullptr)					que.push(curr->left);								if (curr->right != nullptr) {					que.push(curr->right);				}				last = curr;			}			curr->next = nullptr;		}		return root;	}};
Loading comments…