【数据结构和算法】广度优先BFS遍历图(树的层序遍历的拓展)
目录
○树的层次遍历:
题:leetcode102:
广度优先优先遍历:
代码模板(来源:labuladong算法小抄):
图的广度优先遍历是树的层次遍历的拓展
○树的层次遍历:
按照数的高度从上到下,从左到右一次遍历节点
在遍历时需要用到队列
例:A-BC-DFG
伪代码:
题:leetcode102:
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {vector<vector<int>>res;
public:vector<vector<int>> levelOrder(TreeNode* root) {
if(!root)
return res;
queue<TreeNode*>q;
vector<int>path;
q.push(root);
while(!q.empty())
{int n=q.size();for(int i=0;i<n;i++){TreeNode *cur=q.front();q.pop();path.push_back(cur->val);if(cur->left){q.push(cur->left);}if(cur->right){q.push(cur->right);}}res.push_back(path);path.clear();}
return res;}
};
广度优先优先遍历:
从顶点s开始广度优先遍历,首先遍历与s距离为1的顶点,然后遍历与s距离为2 的顶点
通过队列实现
代码模板(来源:labuladong算法小抄):
queue<node>q;
q.push(v);
print(v);
visited[v.No]=1;
while(!q.empty())
{
node p=q.front();
q.pop();
for(遍历p的邻接点)
{如果没有访问过,置访问标记,并进队
}}
【数据结构和算法】广度优先BFS遍历图(树的层序遍历的拓展)相关推荐
- c++层次遍历_数据结构与算法,弄懂图的两种遍历方式
1 引言 遍历是指从某个节点出发,按照一定的的搜索路线,依次访问对数据结构中的全部节点,且每个节点仅访问一次. 在二叉树基础中,介绍了对于树的遍历.树的遍历是指从根节点出发,按照一定的访问规则, ...
- 【数据结构与算法】之深入解析“二叉树的层序遍历II”的求解思路与算法示例
一.题目要求 给你二叉树的根节点 root ,返回其节点值自底向上的层序遍历(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历). 示例 1: 输入:root = [3,9,20,null,nu ...
- 【数据结构与算法】之深入解析“二叉树的层序遍历”的求解思路与算法示例
一.题目要求 给你二叉树的根节点 root ,返回其节点值的层序遍历 (即逐层地,从左到右访问所有节点). 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3
- 《数据结构》实验报告六:图的表示与遍历
一.实验目的 1.掌握图的邻接矩阵和邻接表表示 2.掌握图的深度优先和广度优先搜索方法 3.理解图的应用方法 二.实验预习 说明以下概念 1.深度优先搜索遍历: 一种图的遍历方式:从图中任意一个起始 ...
- 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)
数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...
- 数据结构与算法(java):树-二叉树(二叉查找树(BST)、线索化二叉树、哈夫曼树、平衡二叉树【AVL】、二叉树的前中后序遍历)
二叉树 1.定义 二叉树 就是度不超过2的树(每个结点最多只有两个子结点).如图 2.特殊二叉树 满二叉树 当二叉树的每一个层的结点树都达到最大值,则这个二叉树就是满二叉树. 完全二叉树 叶结点只能出 ...
- 数据结构与算法(C++)– 图(Graph)
数据结构与算法(C++)– 图(Graph) 1.图的基础概念 定义:一个图G=(V, E)由顶点(vertex)的集V和边(edge)的集E组成. 边(edge):一对点即为一条边(v, w),其中 ...
- 我的软考之路(四)——数据结构与算法(2)之树与二叉树
上篇博文主要介绍的是数据结构的线性结构,我们这篇博文介绍非线性结构-树与二叉树,我先介绍树的一些基本概念,树的遍历,再介绍二叉树相关概念和特性,以及二叉树的遍历,最后再树与二叉树的对比,总结. 树为了 ...
- 数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树
数据结构与算法之判断一棵树是否为搜索二叉树.判断一棵树是否是完全二叉树 目录 判断一棵树是否为搜索二叉树 判断一棵树是否是完全二叉树 1. 判断一棵树是否为搜索二叉树 概念:搜索树就是中序遍历的结果是 ...
最新文章
- 在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序 3
- python模块与包的导入
- Java 编程语言中很少被人了解的特性-statement label
- 子弹短信新发布,支付宝即将入驻
- 手持光谱分光仪太贵,用什么代替?
- 20154322 杨钦涵 Exp2 后门原理与实践
- 浅析JSP动态网页开发技术
- 华为手机使用应用沙盒动态修改imsi参数
- latex 图、表 中英文标题
- happen-before原则
- SpringCloud学习笔记day01
- Oracle的布莱恩·格茨(Brian Goetz)展望Lambdas的未来
- 递归函数——上台阶问题
- Class类是什么?
- 蓝桥杯 算法提高 我们的征途是星辰大海
- vi编辑器终端程序的运行(hello world)
- POE交换机供电线序及连结方法
- python里面pandas对数据表的变量重新赋值,将满意,不满意的李克特量表赋值为数字
- C++面试知识点搜集
- html5 3d全景代码,HTML5教程 三维全景详解