美文网首页程序员
树的层次遍历总结

树的层次遍历总结

作者: 不知名的程序员 | 来源:发表于2020-03-08 16:33 被阅读0次

最近正巧Leetcode出了每日一题计划,本着蹭点积分的原则,每天都会写几道题,做了一些关于树的层次遍历的题目,都是一样的套路,简单总结一下几道关于层次遍历的题目。

102. 二叉树的层次遍历

这到题是我们做后面层次遍历变形题目的基础,只要掌握了这个,才能做后面的题目。层次遍历也叫BFS,即广度优先遍历,使用队列来实现(也可以使用递归,但这里不会写,因为我觉得大部分层次遍历的题目用迭代的方式比较容易理解)。下面就是层次遍历的模板,需要注意的点都已经用注释标注了。如果实在理解不了的话背下来也是可以的。

103. 二叉树的锯齿形遍历

我们可以发现,返回结果有这样的规律,奇数层从左到右遍历,偶数层从右到左遍历,那这样我们就可以动手在层次遍历的模板上进行更改了。

做法也比较简单,我们只需要一个变量来记录当前遍历到第几层,再根据该层的奇偶性质进行正序或者逆序的添加即可。

107. 二叉树的层次遍历2

这道题和102题没什么不同,只是要求结果是从最低层到最高层逆序输出。我们可以使用102题的代码,最后将集合逆序即可。或者使用103题的技巧,在添加的整个层的时候就进行逆序添加。

116.填充节点的下一个右侧节点指针

从图中我们可以看出,其实相当于将每层的节点组成一个单链表。我们只需要在遍历的时候将该层的节点组合成链表即可

这里当存储每层集合的list为空时,意味着我们遍历的节点是头结点,我们将它记录下来。下次进入该层时,将pre节点的next指针指向正在遍历的节点。最后在每层遍历结束的时候,将pre的next指针指向空即可。

199. 二叉树的右视图

这道题我一开始看到觉得无从下手,后来发现只是层次遍历的换法描述而已。换成这样的描述会更清晰:求每层节点的最右侧节点。其实从右侧能看到的节点就是每层最右侧的节点。这就又回到层次遍历上来,我们只需要找到每层的最后一个节点即可。

513:树左下角的值
给定一个二叉树,在树的最后一行找到最左边的值。

这个题在有了上面的基础下应该就比较简单了,我们可以使用一个变量记录每层的第一个节点,然后不断进行更新就可以了。这里代码就不贴出来了。

515. 求树中每行最大值
您需要在二叉树的每一行中找到最大的值。

这个题也没什么好说的,可以在遍历每层的时候不断更新每层的最大值放入结果,也可以将每层的结果存入集合,最后再做统一处理。

637:二叉树的层平均值
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组

这题与515几乎一样,不多说。与之类似的题还有【1302:层数最深叶子节点的和】等等

总结

二叉树层次遍历的题目比较简单,基本就是套模板,无非就是使用点技巧在遍历的过程中求出结果,或者慢一点求出每层的集合再遍历求最后的结果。总之记住层次遍历的模板就ok拉。

相关文章

  • 树的层次遍历总结

    最近正巧Leetcode出了每日一题计划,本着蹭点积分的原则,每天都会写几道题,做了一些关于树的层次遍历的题目,都...

  • 二叉树的蛇形层次遍历(LeetCode.103)

    题目 解析 首先参考二叉树的层次遍历层次遍历二叉树(LeetCode--102二叉树的层次遍历)[https://...

  • 树的遍历算法

    树的递归遍历 树的层次遍历 树的非递归前序遍历 树的非递归中序遍历

  • 二叉树层次遍历

    二叉树层次遍历,又称为宽度优先搜索,按树的层次依次访问树的结点。层次遍历使用队列对遍历节点进行 存储,先进入队列的...

  • 二叉树遍历

    二叉树遍历(非递归写法) 先序遍历 中序遍历 后序遍历 层次遍历 给定一个二叉树,返回其按层次遍历的节点值。 (即...

  • LeetCode 102 && 429 广度优先

    概述 前言 429 N 叉树的层次遍历 90.36% 102 二叉树的层次遍历 99.76% 后记 前言 不管经济...

  • 数据结构重学日记(二十二)二叉树的层次遍历

    二叉树的层次遍历也属于非递归遍历,和之前先序、中序、后序遍历的区别在于层次遍历需要借助队列来实现。 层次遍历的操作...

  • 二叉树的层次遍历

    三道层次遍历题,同一个模板,这边用到的是两个队列 二叉树的层次遍历 LeetCode题目地址 二叉树的层次遍历 加...

  • 二叉树的基本算法

    一、二叉树的递归遍历 二、二叉树的层次遍历 二叉树的层次遍历是指二叉树从上到下,从左到右遍历数据。同一层中的节点访...

  • [LeetCode] 226. Invert Binary Tr

    我们学过树的前序遍历(DFS)和层次遍历(BFS),在邓俊辉《数据结构(C++语言版)》的前序遍历和层次遍历的实现...

网友评论

    本文标题:树的层次遍历总结

    本文链接:https://www.haomeiwen.com/subject/zfyddhtx.html