LeetCode每日一题 116. 填充每个节点的下一个右侧节点指针
生活随笔
收集整理的這篇文章主要介紹了
LeetCode每日一题 116. 填充每个节点的下一个右侧节点指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接
思路
層序遍歷,記錄每個節點的層數,另外使用一個前驅節點,判斷層數是否相同,如果在同一層就修改next。
class Solution { public:Node* connect(Node* root) {if (!root) return root;pair<Node*, int> pre = make_pair(nullptr, -1);queue<pair<Node*, int>> q;q.push(make_pair(root, 0));while (!q.empty()) {pair<Node*, int> f = q.front();q.pop();if (pre.first && pre.second == f.second) pre.first->next = f.first;pre = f;if (f.first->left) q.push(make_pair(f.first->left, f.second+1));if (f.first->right) q.push(make_pair(f.first->right, f.second+1));}return root;} };利用完美二叉樹的特性,同樣使用層序遍歷,每次處理一層的數據。
class Solution { public:Node* connect(Node* root) {if (!root) return root;queue<Node*> q;q.push(root);while (!q.empty()) {Node *pre = nullptr, *cur;int n = q.size();for (int i = 0; i < n; ++i) {cur = q.front();q.pop();if (pre) pre->next = cur;pre = cur;if (cur->left) {q.push(cur->left);}if (cur->right) {q.push(cur->right);}}}return root;} }; 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的LeetCode每日一题 116. 填充每个节点的下一个右侧节点指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode每日一题 24. 两两交
- 下一篇: LeetCode每日一题 977. 有序