层序遍历就是逐层遍历树结构。
广度优先搜索是一种广泛运用在树或图这类数据结构中,遍历或搜索的算法。 该算法从一个根节点开始,首先访问节点本身。 然后遍历它的相邻节点,其次遍历它的二级邻节点、三级邻节点,以此类推。
当我们在树中进行广度优先搜索时,我们访问的节点的顺序是按照层序遍历顺序的。
leetcode:
102. 二叉树的层次遍历
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
解如下
vector<vector<int>> levelOrder(TreeNode* root) {
vector < vector<int>>result;
if (root == NULL)return result;
std::queue<TreeNode*>que;
que.push(root);
TreeNode*p = root;
int len = que.size();
while (!que.empty())
{
vector<int>vec;
len = que.size();
while (len--)
{
p = que.front();
que.pop();
vec.push_back(p->val);
if (p->left)que.push(p->left);
if (p->right)que.push(p->right);
}
result.push_back(vec);
}
return result;
}