116. 填充每个节点的下一个右侧节点指针——记录(C++)
2021/11/7 11:11:40
本文主要是介绍116. 填充每个节点的下一个右侧节点指针——记录(C++),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
class Solution { public: queue<Node*>q; Node* connect(Node* root) { if(!root) return root; q.push(root); int sz; while(!q.empty()) { sz=q.size(); Node* n=q.front(); q.pop(); while(sz>0) { if(n->left) { q.push(n->left); q.push(n->right); } if (sz!=1) { n->next=q.front(); q.pop(); n=n->next; } --sz; } } return root; } };
半个小时。
参考了广度优先遍历。
加油。
class Solution { public: Node* connect(Node* root) { if (root == nullptr) { return root; } // 从根节点开始 Node* leftmost = root; while (leftmost->left != nullptr) { // 遍历这一层节点组织成的链表,为下一层的节点更新 next 指针 Node* head = leftmost; while (head != nullptr) { // CONNECTION 1 head->left->next = head->right; // CONNECTION 2 if (head->next != nullptr) { head->right->next = head->next->left; } // 指针向后移动 head = head->next; } // 去下一层的最左的节点 leftmost = leftmost->left; } return root; } };
这个答案好。
这篇关于116. 填充每个节点的下一个右侧节点指针——记录(C++)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27Rocket消息队列资料:新手入门指南
- 2024-11-27rocket消息队资料详解与入门指南
- 2024-11-27RocketMQ底层原理资料详解入门教程
- 2024-11-27RocketMQ项目开发资料:新手入门教程
- 2024-11-27RocketMQ项目开发资料详解
- 2024-11-27RocketMQ消息中间件资料入门教程
- 2024-11-27初学者指南:深入了解RocketMQ源码资料
- 2024-11-27Rocket消息队列学习入门指南
- 2024-11-26Rocket消息中间件教程:新手入门详解
- 2024-11-26RocketMQ项目开发教程:新手入门指南