Leetcode 117. 填充每个节点的下一个右侧节点指针 II 解题思路及C++实现
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 117. 填充每个节点的下一个右侧节点指针 II 解题思路及C++实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
方法一:層序遍歷
解題思路:
和第116題一模一樣,其實,用隊列queue更簡單一些,不用將順序倒來倒去。通過使用隊列的長度信息queue.size(),可以只需要一個隊列就能做到層序遍歷。
/* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() {}Node(int _val, Node* _left, Node* _right, Node* _next) {val = _val;left = _left;right = _right;next = _next;} }; */ class Solution { public:Node* connect(Node* root) {if(root == NULL) return root;//層序遍歷stack<Node*> s1;s1.push(root);while(!s1.empty()){stack<Node*> s2;Node* temp1 = NULL;Node* temp2 = NULL;while(!s1.empty()){temp1 = s1.top();s1.pop();temp1->next = temp2;temp2 = temp1;if(temp1->right)s2.push(temp1->right);if(temp1->left)s2.push(temp1->left);}//s2中節點順序是反過來的while(!s2.empty()){s1.push(s2.top());s2.pop();}}return root;} };?
?
總結
以上是生活随笔為你收集整理的Leetcode 117. 填充每个节点的下一个右侧节点指针 II 解题思路及C++实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 116. 填充每个节点
- 下一篇: Leetcode 129. 求根到叶子节