LeetCode 103_ 二叉树的锯齿形层序遍历

LeetCode 103: 二叉树的锯齿形层序遍历

题目

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

示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[20,9],[15,7]]

示例 2:
输入:root = [1]
输出:[[1]]

示例 3:
输入:root = []
输出:[]

思路

树的层序遍历,使用双端队列,可以从队尾或队头存入元素

代码

class Solution {
    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
        List<List<Integer>> res=new ArrayList<>();
        if(root==null)
        return res;
        Queue<TreeNode> que=new LinkedList<TreeNode>();
        que.add(root);
        while(!que.isEmpty())
        {
            List<Integer> l=new ArrayList<>();
            int count=que.size();
            while(count>0)
            {
                TreeNode t=que.poll();
                if(res.size()%2==0)
                l.add(t.val);
                else
                l.add(0,t.val);
    
                if(t.left!=null)
                que.add(t.left);
                if(t.right!=null)
                que.add(t.right);
                count--;
            }
            res.add(l);
        }
        return res;
    }
}

反思

①可以通过res的大小判断当前遍历的层数
②创建队列的语句:Queue que=new LinkedList();

posted @   Jane'scodehouse  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示