完全二叉树的层序遍历,如下图所示二叉树的先序遍历
BM26寻找二叉树的序列遍历
知识广度优先搜索(BFS)
描述给定的二叉树,返回二叉树的序列遍历结果(从左到右,逐层遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
二叉树序列遍历导致
[
[3],
[9,20],
[15,7]
]
数据范围:二叉树中的节点数满足
示例1输入:
{1,2}复制返回值:
[[1],[2]]复制
2示例输入:
{1,2,3,4,#,#,5}复制返回值:
[[1],[2,3],[4,5]]在队列的帮助下,可以轻松实现分层访问。但是怎么分层呢?答案是每次离开队列时获取当前队列的大小N,然后依次从队列中取出N个元素。这些元素是对同一层中的所有元素从左到右排序的结果。实现如下:
#包含位/标准数据。h
定义树结构
{
int val
struct TreeNode * left
struct TreeNode * right
TreeNode(int x) : val(x),left(nullptr),right(nullptr) {}
};
STD:vector STD:vector int level order(TreeNode * root)
{
STD:queue TreeNode * q;
STD:vector STD:vector int v;
if (root==nullptr)
{
回归v;
}
q . push(root);
而(!q.empty())
{
auto n=q . size();
STD:vector int a;
而(n - 0)
{
自动节点=q . front();
a . push _ back(node-val);
q . pop();
if (node- left!=nullptr)
{
q.push(节点向左);
}
如果(节点——对!=nullptr)
{
q.push(节点右移);
}
}
五、push_back(一);
}
回归v;
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。