思路:
- 层次遍历二叉树
 - 每一层都建立链表
 - 为了不使用额外空间,所以采用
cur_node->next = q.front() 这样的结构
代码:
 
/*// Definition for a Node.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) {}};*/class Solution {public:    Node* connect(Node* root) {        if (!root) {            return nullptr;        }        queue<Node*> q;        q.push(root);        while (!q.empty()) {            int cur_level_size = q.size();            for (int i = 0; i < cur_level_size; ++i) {                Node* cur_node = q.front();                q.pop();                if (i != cur_level_size - 1) {                    cur_node->next = q.front();                } else {                    cur_node->next = nullptr;                }                if (cur_node->left) q.push(cur_node->left);                if (cur_node->right) q.push(cur_node->right);            }        }        return root;    }};