1、题目描述
2、题目分析
二叉树的层序遍历主要算法思想是使用 队列这一数据结构实现,这个数据结构多应用在和 图相关的算法。例如图的广度优先遍历就可以使用队列的方法实现。本题的关键在于如何识别出一层已经打印完毕。解决思路是在每一层结束时加入一个特殊字符如NULL.
根据层序遍历和中序遍历构建二叉树、访问到 NULL 时 就知道一层访问完毕,接下来的元素是下一层的元素。
3、代码
vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int> > ans;if( root == NULL )return ans ;queue<TreeNode* > q;q.push(root);q.push(NULL);vector<int> level;while( !q.empty() ){TreeNode* p = q.front();q.pop();if(p == NULL){ans.push_back(level);level.resize(0);if(q.size() > 0){q.push(NULL);}}else{level.push_back(p->val);if( p->left != NULL )q.push( p->left );if( p->right != NULL )q.push( p->right ); }}return ans;}