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; }