题解 | #求二叉树的层序遍历#
求二叉树的层序遍历
https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
#include <vector>
class Solution {
public:
vector<vector<int>> findAll(vector<TreeNode*> vec){
vector<vector<int>> res;
if(vec.empty()) return res;
vector<int> current;
vector<TreeNode*> next;
for(int i = 0;i < vec.size();i++){
current.push_back(vec[i]->val);
if(vec[i]->left != nullptr){
next.push_back(vec[i]->left);
}
if(vec[i]->right != nullptr){
next.push_back(vec[i]->right);
}
}
res.push_back(current);
vector<vector<int>> vec1 = findAll(next);
for(vector<int> v1:vec1){
res.push_back(v1);
}
return res;
}
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int>> levelOrder(TreeNode* root) {
// write code here
vector<vector<int>> res;
if(root == nullptr) return res;
vector<int> first;
first.push_back(root->val);
res.push_back(first);
vector<TreeNode*> vec;
if(root->left != nullptr){
vec.push_back(root->left);
}
if(root->right != nullptr){
vec.push_back(root->right);
}
vector<vector<int>> next = findAll(vec);
for(vector<int> v1:next){
res.push_back(v1);
}
return res;
}
};

查看22道真题和解析