LeetCodeAnimation/notes/LeetCode第103号问题:二叉树的锯齿形层次遍历.md
程序员吴师兄 5dee53d957 更换图片地址
2019-11-14 11:00:28 +08:00

56 lines
1.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LeetCode 103 号问题二叉树的锯齿形层次遍历
> 本文首发于公众号五分钟学算法[图解 LeetCode ](<https://github.com/MisterBooo/LeetCodeAnimation>)系列文章之一。
>
> 个人网站[https://www.cxyxiaowu.com](https://www.cxyxiaowu.com)
题目来源于 LeetCode 上第 103 号问题二叉树的锯齿形层次遍历题目难度为 Medium目前通过率为 43.8%
### 题目描述
给定一个二叉树返回其节点值的锯齿形层次遍历即先从左往右再从右往左进行下一层遍历以此类推层与层之间交替进行
例如
给定二叉树 `[3,9,20,null,null,15,7]`,
```
3
/ \
9 20
/ \
15 7
```
返回锯齿形层次遍历如下
```
[
[3],
[20,9],
[15,7]
]
```
### 题目解析
该问题需要用到**队列**与之前的[二叉树的层次遍历](https://xiaozhuanlan.com/topic/8579460312)类似,不同点在于在偶数层需要翻转一下。
- 建立一个queue
- 先把根节点放进去这时候找根节点的左右两个子节点
- 去掉根节点此时queue里的元素就是下一层的所有节点
- 循环遍历将结果存到一个一维向量里
- 遍历完之后再把这个一维向量存到二维向量里
- 如果该层为偶数层则reverse翻转一下
- 以此类推可以完成层序遍历
### 动画描述
![](https://blog-1257126549.cos.ap-guangzhou.myqcloud.com/blog/xuoqo.gif)
### 代码实现
![](https://blog-1257126549.cos.ap-guangzhou.myqcloud.com/blog/7mnmj.png)
![](https://blog-1257126549.cos.ap-guangzhou.myqcloud.com/blog/q9yt7.png)