题解 | #求二叉树的层序遍历#
求二叉树的层序遍历
https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ #include <deque> #include <vector> class Solution { public: /** * * @param root TreeNode类 * @return int整型vector<vector<>> */ // 层次遍历 vector<vector<int> > levelOrder(TreeNode* root) { // write code here std::vector<std::vector<int > > arr; if(root == nullptr) return arr; std::deque<TreeNode* > deq; int i = 1; //表示他的层次个数 std::vector<int > temparr; TreeNode* p = root;//用来接收队头元素 deq.push_back(p); while(!deq.empty()) { //我们将一层的个数统计 i = deq.size(); temparr.clear(); //这个循环处理一层 while(i--) { //出队一个元素 p = deq.front(); deq.pop_front(); //添加该元素到temparr temparr.push_back(p->val); //添加他的左右子树到队列 if(p->left != nullptr) deq.push_back(p->left); if(p->right != nullptr) deq.push_back(p->right); } //将这一层的数据添加到二维数组 arr.push_back(temparr); } return arr; } };