二叉树广度优先遍历(层次遍历)

宽度优先遍历,广度度优先遍历,层次遍历。 即从根节点开始依次遍历左子节点和右子节点,直到所有子节点都变遍历完为止。

遍历结果:{1,2,3,4,5,6,7,8,9,10 }

leetcode练习:

思路:

将树上顶点按照层次依次放入队列结构中,队列中元素满足 FIFO(先进先出)的原则。

初始化队列只包含一个节点 root 和层次编号 0 : level = 0。

当队列非空的时候:          

    在输出结果 levels 中插入一个空列表,开始当前层的算法。        

     计算当前层有多少个元素:等于队列的长度。          

    将这些元素从队列中弹出&

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 二叉树和图的广度优先遍历算法也有一些相同和不同的地方。相同之处在于都是基于队列的方式来实现广度优先遍历的。具体来说,二叉树广度优先遍历算法是从根节点开始,逐层遍历中的节点,每一层的节点按照从左到右的顺序加入队列中,而图的广度优先遍历算法则是从起点开始,逐层遍历图中的节点,每一层的节点按照任意顺序加入队列中。 不同之处在于,二叉树广度优先遍历算法是基于形结构的,因此只需要记录当前层的节点即可,而图的广度优先遍历算法则需要记录已经访问过的节点,以避免死循环。另外,对于非连通图,需要从每个未访问的节点开始进行广度优先遍历,而对于连通图,只需要从任意一个节点开始遍历即可。 总之,二叉树和图的广度优先遍历算法在实现细节上有所不同,但都是基于队列的方式来实现广度优先遍历的。 ### 回答2: 二叉树和图的广度优先遍历算法在原理和实现上有一些共通之处,但也存在一些区别。 首先,广度优先遍历算法是一种遍历数据结构中节点的方式,以节点的深度逐层遍历,即先访问根节点,然后是第一层节点,接着是第二层节点,以此类推。这种遍历方式可以通过队列来实现。对于二叉树广度优先遍历按照层次顺序遍历节点,从根节点开始,先遍历左子遍历右子。而对于图,广度优先遍历从一个起始节点开始,先遍历与起始节点相邻的节点,然后再遍历这些相邻节点的相邻节点,以此类推。在遍历过程中,需要使用一个队列来存储待访问的节点。 其次,二叉树和图的广度优先遍历算法的时间复杂度都是O(N),其中N为节点数量。这是因为每个节点都会被访问一次,并且每个节点也只会被访问一次。但是,对于二叉树来说,由于具有左右子的顺序性,所以广度优先遍历也是按照一定顺序进行的。而对于图来说,由于节点之间的连接是任意的,所以广度优先遍历的顺序是没有特定规律的。 总结来说,二叉树和图的广度优先遍历算法都是一种按照节点深度逐层遍历的算法,但在实现细节上存在一些差异。两者的时间复杂度都是O(N),但二叉树遍历顺序是有规律的,而图的遍历顺序是任意的。 ### 回答3: 二叉树和图的广度优先遍历算法有一些共同之处,但也有一些重要的不同点。 首先,广度优先遍历算法都是从根节点开始,逐层地进行遍历。对于二叉树而言,广度优先遍历按照每一层的顺序遍历节点,先遍历根节点,然后是第一层的节点,再接着是第二层的节点,依此类推。对于图而言,广度优先遍历同样是按照每一层的顺序遍历节点,但是不同的是图可能包含循环和多个连接的分支,所以需要使用一个标记列表来避免重复遍历。 其次,对于二叉树广度优先遍历,可以使用队列来实现。首先将根节点入队,然后进入循环直到队列为空。在每一次循环中,取出队首节点,将其值加入结果列表中,然后分别判断其左右子节点是否存在并将其入队。而对于图的广度优先遍历,我们需要使用队列来保存和遍历节点。从起始节点开始,将该节点标记为已访问,并将其入队。然后在循环中,取出队首节点,将其值添加到结果列表中,并将与其相邻且未访问过的节点入队并标记为已访问,直到队列为空。 最后,二叉树和图的广度优先遍历算法的时间复杂度均为O(N),其中N表示节点的个数。因为每个节点都会被访问一次且入队一次,所以时间复杂度与节点的数量成正比。 综上所述,二叉树和图的广度优先遍历算法有一些相似之处,但也存在一些不同点,特别是在处理图的时候需要考虑到图中可能存在的循环和分支。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值