Merge branch 'master' of github.com:gaoyangu/leetcode-master

This commit is contained in:
qyg
2021-12-23 10:45:50 +08:00
2 changed files with 11 additions and 20 deletions

View File

@ -87,7 +87,7 @@ public:
本题使用层序遍历是最为直观的,如果对层序遍历不了解,看这篇:[二叉树:层序遍历登场!](https://programmercarl.com/0102.二叉树的层序遍历.html)。
层序遍历本来就是一层一层的去遍历记录一层的头结点nodePre然后让nodePre指向当前遍历的节点就可以了
遍历每一行的时候如果不是最后一个Node则指向下一个Node如果是最后一个Node则指向nullptr
代码如下:
@ -96,27 +96,18 @@ class Solution {
public:
Node* connect(Node* root) {
queue<Node*> que;
if (root != NULL) que.push(root);
if (root != nullptr) que.push(root);
while (!que.empty()) {
int size = que.size();
vector<int> vec;
Node* nodePre;
Node* node;
for (int i = 0; i < size; i++) { // 开始每一层的遍历
if (i == 0) {
nodePre = que.front(); // 记录一层的头结点
que.pop();
node = nodePre;
} else {
node = que.front();
que.pop();
nodePre->next = node; // 本层前一个节点next指向本节点
nodePre = nodePre->next;
}
if (node->left) que.push(node->left);
if (node->right) que.push(node->right);
for (int i = 0; i < size; ++i) {
Node* node = que.front();
que.pop();
if (i != size - 1) {
node->next = que.front(); //如果不是最后一个Node 则指向下一个Node
} else node->next = nullptr; //如果是最后一个Node 则指向nullptr
if (node->left != nullptr) que.push(node->left);
if (node->right != nullptr) que.push(node->right);
}
nodePre->next = NULL; // 本层最后一个节点指向NULL
}
return root;
}

View File

@ -69,7 +69,7 @@
相信动规的题目,很大部分同学都是这样做的。
看一下题解,感觉看懂了,然后照葫芦画瓢,如果能正好画对了,万事大吉,一旦要是没通过,就怎么改都通过不了,对 dp数组的初始化公式,遍历顺序,处于一种黑盒的理解状态。
看一下题解,感觉看懂了,然后照葫芦画瓢,如果能正好画对了,万事大吉,一旦要是没通过,就怎么改都通过不了,对 dp数组的初始化公式,遍历顺序,处于一种黑盒的理解状态。
写动规题目,代码出问题很正常!