@@ -30,6 +30,10 @@ return its level order traversal as:
3030
3131然后不断的出队, 如果出队的是null,则表式这一层已经结束了,我们就继续push一个null。
3232
33+ 如果不入队特殊元素Null来表示每层的结束,则在while循环开始时保存当前队列的长度,以保证每次只遍历一层(参考下面的C++ Code)。
34+
35+ > 如果采用递归方式,则需要将当前节点,当前所在的level以及结果数组传递给递归函数。在递归函数中,取出节点的值,添加到level参数对应结果数组元素中(参考下面的C++ Code)。
36+
3337
3438## 关键点解析
3539
@@ -43,7 +47,9 @@ return its level order traversal as:
4347
4448
4549## 代码
50+ * 语言支持:JS,C++
4651
52+ Javascript Code:
4753``` js
4854/*
4955 * @lc app=leetcode id=102 lang=javascript
@@ -123,7 +129,66 @@ var levelOrder = function(root) {
123129
124130 return items;
125131};
132+
133+ ```
134+ C++ Code:
135+ ``` C++
136+ /* *
137+ * Definition for a binary tree node.
138+ * struct TreeNode {
139+ * int val;
140+ * TreeNode *left;
141+ * TreeNode *right;
142+ * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
143+ * };
144+ */
145+
146+ // 迭代
147+ class Solution {
148+ public:
149+ vector<vector<int >> levelOrder(TreeNode* root) {
150+ auto ret = vector<vector<int >>();
151+ if (root == nullptr) return ret;
152+ auto q = vector<TreeNode* >();
153+ q.push_back(root);
154+ auto level = 0;
155+ while (!q.empty())
156+ {
157+ auto sz = q.size();
158+ ret.push_back(vector<int >());
159+ for (auto i = 0; i < sz; ++i)
160+ {
161+ auto t = q.front();
162+ q.erase(q.begin());
163+ ret[ level] .push_back(t->val);
164+ if (t->left != nullptr) q.push_back(t->left);
165+ if (t->right != nullptr) q.push_back(t->right);
166+ }
167+ ++level;
168+ }
169+ return ret;
170+ }
171+ };
172+
173+ // 递归
174+ class Solution {
175+ public:
176+ vector<vector<int >> levelOrder(TreeNode* root) {
177+ vector<vector<int >> v;
178+ levelOrder(root, 0, v);
179+ return v;
180+ }
181+ private:
182+ void levelOrder(TreeNode* root, int level, vector<vector<int >>& v) {
183+ if (root == NULL) return;
184+ if (v.size() < level + 1) v.resize(level + 1);
185+ v[ level] .push_back(root->val);
186+ levelOrder(root->left, level + 1, v);
187+ levelOrder(root->right, level + 1, v);
188+ }
189+ };
126190```
191+
127192## 相关题目
128193- [103.binary-tree-zigzag-level-order-traversal](./103.binary-tree-zigzag-level-order-traversal.md)
129194- [104.maximum-depth-of-binary-tree](./104.maximum-depth-of-binary-tree.md)
0 commit comments