File tree Expand file tree Collapse file tree 1 file changed +10
-19
lines changed Expand file tree Collapse file tree 1 file changed +10
-19
lines changed Original file line number Diff line number Diff line change @@ -87,7 +87,7 @@ public:
87
87
88
88
本题使用层序遍历是最为直观的,如果对层序遍历不了解,看这篇:[二叉树:层序遍历登场!](https://programmercarl.com/0102.二叉树的层序遍历.html)。
89
89
90
- 层序遍历本来就是一层一层的去遍历,记录一层的头结点(nodePre),然后让nodePre指向当前遍历的节点就可以了 。
90
+ 遍历每一行的时候,如果不是最后一个Node,则指向下一个Node;如果是最后一个Node,则指向nullptr 。
91
91
92
92
代码如下:
93
93
@@ -96,27 +96,18 @@ class Solution {
96
96
public:
97
97
Node* connect(Node* root) {
98
98
queue<Node*> que;
99
- if (root != NULL ) que.push(root);
99
+ if (root != nullptr ) que.push(root);
100
100
while (!que.empty()) {
101
101
int size = que.size();
102
- vector<int> vec;
103
- Node* nodePre;
104
- Node* node;
105
- for (int i = 0; i < size; i++) { // 开始每一层的遍历
106
- if (i == 0) {
107
- nodePre = que.front(); // 记录一层的头结点
108
- que.pop();
109
- node = nodePre;
110
- } else {
111
- node = que.front();
112
- que.pop();
113
- nodePre->next = node; // 本层前一个节点next指向本节点
114
- nodePre = nodePre->next;
115
- }
116
- if (node->left) que.push(node->left);
117
- if (node->right) que.push(node->right);
102
+ for (int i = 0; i < size; ++i) {
103
+ Node* node = que.front();
104
+ que.pop();
105
+ if (i != size - 1) {
106
+ node->next = que.front(); //如果不是最后一个Node 则指向下一个Node
107
+ } else node->next = nullptr; //如果是最后一个Node 则指向nullptr
108
+ if (node->left != nullptr) que.push(node->left);
109
+ if (node->right != nullptr) que.push(node->right);
118
110
}
119
- nodePre->next = NULL; // 本层最后一个节点指向NULL
120
111
}
121
112
return root;
122
113
}
You can’t perform that action at this time.
0 commit comments