层序遍历二叉树,就是从左到右一层一层去遍历,因为队列是先进先出,所以从左到右需要需要使用队列来辅助实现。
实现思路:
1.将根结点入队。
2.每出队一个元素,就加入他的左右孩子。
3.将每层节点保存在一个数组中,在将这个数组加入到结果数组中。
实现代码如下:
//二叉树的层序遍历
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> result;
queue<TreeNode*> qe;
if (root != NULL) qe.push(root);
while(! qe.empty()) {
int s = qe.size();
vector<int> vec;
while (s!=0) {
TreeNode* node = qe.front();
vec.push_back(node->val);
qe.pop();
if (node->left) qe.push(node->left);
if (node->right) qe.push(node->right);
s--;
}
result.push_back(vec);
}
return result;
}
这个代码即为二叉树层序遍历的模板。