题目描述链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/
解题思路:参考官方题解,解题思路如下:对于二叉树的层序遍历,首先应该考虑到的数据结构便是队列,利用队列现进先出的特性,可以很方便的解决此题。
(1)根节点入队。
(2)当队列不为空时,开始如下迭代过程:获取当下队列长度,在当下队列长度控制下开始内层循环,访问该长度下队列的每一个元素,然后出队并扩展该节点(扩展出下一层元素)。当该长度访问完后,即访问完第k层元素。然后开始访问第k+1层元素,并扩展第k+2层元素,一直到队列为空时结束。具体LeetCode下C++代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { queue<TreeNode *>q;//层次遍历所用队列 vector<vector<int>>res;//保存结果 if(!root) return res; q.push(root); while(!q.empty()){ int len=q.size(); vector<int>temp; for(int i=0;i<len;++i){ TreeNode *m=q.front();//->val; temp.push_back(m->val); q.pop(); if(m->left){ q.push(m->left); } if(m->right){ q.push(m->right); } } res.push_back(temp); } return res; } };