leetcode116. 填充每个节点的下一个右侧节点指针(层序遍历07)
生活随笔
收集整理的這篇文章主要介紹了
leetcode116. 填充每个节点的下一个右侧节点指针(层序遍历07)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一:題目
二:上碼
/* // 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) {/**思路:雖然很明顯這道題是用層序遍歷,但是沒太理解題意,看了題解才明白,這是在原來的二叉樹上做些操作,我們需要是將每層的結(jié)點(diǎn)用next指針連起來,這個(gè)操作在我們遍歷每層結(jié)點(diǎn)可以操作**/queue<Node*>q;if(root) q.push(root);while(!q.empty()) {int size = q.size();Node* head; Node* node;for(int i = 0; i < size; i++) {if(i == 0) {head = q.front();//這是頭結(jié)點(diǎn)q.pop();node = head;//處理其結(jié)點(diǎn)的孩子節(jié)點(diǎn)}else{node = q.front();//這是頭結(jié)點(diǎn)的后續(xù)結(jié)點(diǎn)q.pop();head->next = node;head = head->next;}if(node->left) q.push(node->left);if(node->right) q.push(node->right);}head->next = NULL;//最后的指針指向空}return root;} };總結(jié)
以上是生活随笔為你收集整理的leetcode116. 填充每个节点的下一个右侧节点指针(层序遍历07)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 515. 在每个树行中
- 下一篇: leetcode117. 填充每个节点的