Skip to content

Commit e5221d5

Browse files
committed
Create Populating Next Right Pointers in Each Node.cpp
1 parent cf83369 commit e5221d5

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* Definition for binary tree with next pointer.
3+
* struct TreeLinkNode {
4+
* int val;
5+
* TreeLinkNode *left, *right, *next;
6+
* TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}
7+
* };
8+
*/
9+
class Solution {
10+
public:
11+
void connect(TreeLinkNode *root) {
12+
// Start typing your C/C++ solution below
13+
// DO NOT write int main() function
14+
if (!root)return;
15+
queue<TreeLinkNode *>q;
16+
q.push(root);
17+
int node_in_now_level=1;
18+
int node_in_next_level=0;
19+
TreeLinkNode *last=NULL;
20+
while (!q.empty())
21+
{
22+
TreeLinkNode *t=q.front();
23+
q.pop();
24+
if (last)last->next=t;
25+
node_in_now_level--;
26+
if (t->left)
27+
{
28+
node_in_next_level++;
29+
q.push(t->left);
30+
}
31+
if (t->right)
32+
{
33+
node_in_next_level++;
34+
q.push(t->right);
35+
}
36+
if (!node_in_now_level)
37+
{
38+
last=NULL;
39+
swap(node_in_now_level,node_in_next_level);
40+
}
41+
else
42+
{
43+
last=t;
44+
}
45+
}
46+
}
47+
};

0 commit comments

Comments
 (0)