117. 填充每个节点的下一个右侧节点指针 II

 1 /*
 2 // Definition for a Node.
 3 class Node {
 4 public:
 5     int val;
 6     Node* left;
 7     Node* right;
 8     Node* next;
 9 
10     Node() : val(0), left(NULL), right(NULL), next(NULL) {}
11 
12     Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}
13 
14     Node(int _val, Node* _left, Node* _right, Node* _next)
15         : val(_val), left(_left), right(_right), next(_next) {}
16 };
17 */
18 class Solution 
19 {
20 public:
21     Node* connect(Node* root) 
22     {
23         queue<Node*> q;
24         q.push(root);
25         while(!q.empty())
26         {
27             int n = q.size();
28             for(int i = 0;i < n;i ++)
29             {
30                 Node* temp = q.front();
31                 q.pop();
32                 if(i < n - 1) temp->next = q.front();
33                 if(temp && temp->left) q.push(temp->left);
34                 if(temp && temp->right) q.push(temp->right);
35             }
36         }
37         return root;
38     }
39 };

 

posted @ 2020-04-01 17:15  Jinxiaobo0509  阅读(80)  评论(0)    收藏  举报