IT评测·应用市场-qidao123.com技术社区
标题:
填充每个节点的下一个右侧节点Ⅱ-力扣
[打印本页]
作者:
惊落一身雪
时间:
2024-6-13 21:00
标题:
填充每个节点的下一个右侧节点Ⅱ-力扣
本题如果利用BFS去层序遍历,代码和 填充每个节点的下一个右侧节点 题没有任何区别。但是利用已经建立好的next链表去做,则必要考虑到next指向的节点子节点是否为空的可能。
class Solution {
public:
Node* connect(Node* root) {
if(root == nullptr){
return nullptr;
}
Node * head = root;
while(head != nullptr){
Node * dummy = new Node(0);
Node * temp = dummy;
for(Node* cur = head; cur != nullptr; cur = cur->next){
if(cur->left != nullptr){
temp->next =cur->left;
temp = temp->next;
}
if(cur->right != nullptr){
temp->next = cur->right;
temp = temp->next;
}
}
head = dummy->next;
}
return root;
}
};
复制代码
利用DFS来解决,通过一个数组来纪录每一层的前节点,然后不断更新这个数组。
class Solution {
public:
void dfs(Node* root, vector<Node*>& vec, int depth){
if(root == nullptr){
return;
}
if(depth >= vec.size()){
vec.push_back(nullptr);
}
if(vec[depth] != nullptr){
vec[depth]->next = root;
}
vec[depth] = root;
dfs(root->left, vec, depth + 1);
dfs(root->right, vec, depth + 1);
}
Node* connect(Node* root) {
vector<Node*> vec;
int depth = 0;
dfs(root, vec, depth);
return root;
}
};
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/)
Powered by Discuz! X3.4