【leetcode】116. 填充每个节点的下一个右侧节点指针
struct Node* connect(struct Node* root) { if (root == NULL) { return root; } // 从根节点开始 struct Node* leftmost = root; while (leftmost->left != NULL) { // 遍历这一层节点组织成的链表,为下一层的节点更新 next 指针 struct Node* head = leftmost; while (head != NULL) { // CONNECTION 1 head->left->next = head->right; // CONNECTION 2 if (head->next != NULL) { head->right->next = head->next->left; } // 指针向后移动 head = head->next; } // 去下一层的最左的节点 leftmost = leftmost->left; } return root; }
struct Node* connect(struct Node* root) { if (root == NULL) { return root; } // 从根节点开始 struct Node* leftmost = root; while (leftmost->left != NULL) { // 遍历这一层节点组织成的链表,为下一层的节点更新 next 指针 struct Node* head = leftmost; while (head != NULL) { // CONNECTION 1 head->left->next = head->right; // CONNECTION 2 if (head->next != NULL) { head->right->next = head->next->left; } // 指针向后移动 head = head->next; } // 去下一层的最左的节点 leftmost = leftmost->left; } return root; }