zl程序教程

您现在的位置是:首页 >  后端

当前栏目

LeetCode103二叉树的锯齿形层次遍历(相关话题:二叉树、层次遍历)

二叉树遍历 相关 层次 话题
2023-09-11 14:20:01 时间

题目描述

给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)

例如:
给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7
返回锯齿形层次遍历如下:

[
  [3],
  [20,9],
  [15,7]
]

解题思路

首先定义 cnt 来记录层数的奇偶性,然后在每层结点出队时判断一下该层的奇偶性再存入数组

如果是偶数层就正向存储(以 0 为起始层),奇数层则反向存储

每次存储到数组后 cnt++,再将数组放入接收结果的二维数组 ans,最后返回 ans 即可

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
        List<List<Integer>> ans = new ArrayList<>();
        if (root == null) {
            return ans;