白话解释与算法(二叉树的先序遍历,中序遍历后序遍历层次遍历)腾讯云开发者社区

本期的 DFS 与 BFS 搜索算法,我将围绕二叉树来讲解,所以在了解什么是 BFS 与 DFS 之前,我们先来回顾一下二叉树 的基本概念

学过 数据结构与算法 的同学在接触二叉树的时候,一定遇到过 二叉树的遍历问题,因为二叉树的 本质 就是一个链表,我们可以看看一个二叉树的样子(PS:二叉树还可以使用数组来存储,当然仅限 完全二叉树)

通过上图,我们可以看出二叉树有如下特点:

在这里我们已二叉树为例,我们知道二叉树的遍历方式有如下四种,如果不理解前三种遍历,后面在 DFS 中,我会深入的讲解

但是从 宏观 角度来看,二叉树的遍历方式分为如下两种

二叉树的存储方式也可以分为 线性存储 和 链式存储,这里我们以 链式存储 为例。

从上面的图中我们可以分析出,二叉树每个节点至少是有一个数据域,然后还有两个子节点,所以可以构建出如下数据结构

数据结构用代码实现如下

BFS(Breadth First Search) 即广度优先搜索,在数和图中非常常见的一种搜索算法。所谓层次遍历,就是从一个点,向其周围所有的点进行搜索,类似走迷宫,我们在一个点可以进行上下左右的进行选择走。在上面的二叉树中,BFS 是实质就是层次遍历,

二叉树按照从根节点到叶子节点的层次关系,一层向一层横向遍历各个节点。但是二叉树中横向的节点是没有关系的。因此需要借助一个数据结构来辅助工作,这个数据结构是 队列

我们需要借助队列来完成层次遍历的工作,因此

DFS 即深度优先搜索,同 BFS,在树和图中也是非常常见的。深度优先,就是从一个端点一直查找到另一个端点,“一头深入到底”,在上面的二叉树的遍历中。先序遍历,中序遍历,后序遍历。

给定如下二叉树

二叉树的先序遍历:

按照定义:

代码实现:

使用递归我们可以很快的就实现了先序遍历

走完一遍递归的节点遍历方式,接下来我们走一遍非递归 的先序遍历。但是我们要使用哪种数据结构来实现 BFS 呢?

答:我们使用递归可以解决的问题,那么就一定有非递归的方法解决问题,在上述的 “遍历过程中” ,有一个重要的点就是,当我们的一个节点访问到头了(这个节点没有子节点),就需要回溯 到上一个节点,然后完成剩下的遍历任务。能够完成回溯任务的是 栈。因此得到一个结论,栈 和 递归都具有回溯的特征。

THE END
0.树的特点有哪些是什么树有哪些特点树的特点有哪些是什么 树的特点:1、树木可以调节气候,保持生态平衡,使空气变得清新。2、树具有防风固沙的特点,还能吸收各种粉尘。3、树木的分泌物能杀死细菌。4、树木能够减少噪音污染,保护人类的听觉。 树的特点 1、矮柳树:矮柳树的高度只有3-5厘米,一般生活在温度比较低的高山上,喜欢冻土地带,对于水的要求也是在20摄氏度左右,这 jvzquC41o0zjcwvklwt/exr1lkgp{~4fqe565B;20jznn
1.华夏常青树特惠版2.有何优缺点?有什么特点?华夏常青树特惠版2.有何优缺点?有什么特点? 近期互联网保险市场都十分热门,因为在10月份的时候,有一则保险新规经由银保监会发布出来,不但对今后互联网保险产品做出了明确规定,还要求目前在售的所有互联网保险产品都要在2021年12月31日前下架。 一听到这样的消息,越来越多人就要赶上这末班车,因为都担心一旦新规jvzquC41yy}/ky65:0ipo8rr13>8::<:47<45A<9;884::>0jvsm
2.查找树综述简单总结下二叉查找树,红黑树,B树,B+树,B*树,AVL树,R树的特点关系与用处。 首先他们都是查找树(search tree),支持多种动态集合的操作,search, minimum,maximum,predecessor,successor,insert,delete,既可以用作字典,也可以用作优先队列。一般而言,各种树的操作都与树的高度成正比。 jvzquC41dnuh0lxfp0tfv8~uw3691jwvkerf1mjvckrt1@:577<9
3.数据结构AVL树(全)什么是AVL树? AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 AVL树的特点及形成原因 AVL树本质上是一棵高度平衡的二叉搜索树;先回顾二叉搜索树的基本概念; 二叉搜索树基本概念 二叉查找树(Binary SearchTjvzquC41dnuh0lxfp0tfv8|gkzooa==7829378ftvkimg8igvcomu8646781::8