题目链接
英文链接:https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/
中文链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/
题目详述
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
1 | 3 |
返回锯齿形层次遍历如下:
1 | [ |
题目详解
在 LeetCode102-二叉树的层次遍历 的基础上改为了锯齿形层次遍历(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。可以在之前层次遍历的基础上添加一个标志。当标志为 true 时,表示从左往右,链表从后面添加新值;当标志为 false 时,表示从右往左,链表从前面添加新值。在每一层结束之前反转标志,这样就可以保证层与层之间交替进行。
1 | public class LeetCode_00103 { |
同样,也可以用递归来做。用层数的奇偶性来判断是从左往右还是从右往左。从右往左时,运用 add(0, root.val)
从头添加。
1 | public class LeetCode_00103 { |