2024.2.16力扣每日一题——二叉树的锯齿形层序遍历

2024.2.16

题目来源

力扣每日一题;题序:103

我的题解

方法一 双端队列+标志

层序遍历 利用双端队列和标志,判断当前应该往那个方向遍历

注意:在逆向遍历时,加入后续节点到队列中的顺序需要改变
时间复杂度 :O(N),其中 N 为二叉树的节点数。每个节点会且仅会被遍历一次。
空间复杂度:O(N)。需要维护存储节点的队列和存储节点值的双端队列,空间复杂度为 O(N)。

java 复制代码
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
    List<List<Integer>> res=new ArrayList<>();
    if(root==null)
        return res;
    LinkedList<TreeNode> queue=new LinkedList<>();
    queue.addFirst(root);
    boolean flag=false;//false表示从右到左,true表示从左到右
    while(!queue.isEmpty()){
        int sz=queue.size();
        List<Integer> list=new ArrayList<>();
        for(int i=0;i<sz;i++){
            //从右到左
            if(!flag){
                TreeNode t=queue.pollLast();
                list.add(t.val);
                if(t.left!=null)
                    queue.addFirst(t.left);
                if(t.right!=null)
                    queue.addFirst(t.right);
            //从左到右
            }else{
                TreeNode t=queue.pollFirst();
                list.add(t.val);
                //注意存入的顺序需要改变
                if(t.right!=null)
                    queue.addLast(t.right);
                if(t.left!=null)
                    queue.addLast(t.left);
                
                
            }
        }
        flag=!flag;
        res.add(list);
    }
    return res;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

相关推荐
我爱cope3 分钟前
【Agent智能体22 | 构建AI工作流的技巧-延迟、成本优化】
人工智能·设计模式·语言模型·职场和发展
装不满的克莱因瓶4 分钟前
了解不同机器学习模型的分类
人工智能·python·算法·机器学习·ai·分类·数据挖掘
QiLinkOS6 分钟前
合肥气链科技有限公司本质总结
c++·科技·算法·gitee·开源
2501_9318037517 分钟前
线性筛(欧拉筛):从原理到应用
算法
酉鬼女又兒19 分钟前
零基础入门计算机网络:MAC地址、IP地址与ARP协议全面解析(含考研真题详解)
网络·网络协议·tcp/ip·计算机网络·考研·macos·职场和发展
fengxin_rou19 分钟前
深入理解Java类加载机制:从原理到实战详解
java·开发语言
糖果店的幽灵21 分钟前
Spring AI 从入门到精通-Prompt 工程
java·spring·prompt
ysu_031421 分钟前
leetcode数据结构与算法5~7:链表双指针与二级指针
数据结构·学习·算法·leetcode·链表
小江的记录本23 分钟前
【Spring全家桶】Spring Cloud 2023.0.x:配置中心:Nacos Config、Apollo(附《思维导图》+《面试高频考点清单》)
java·spring boot·后端·python·spring·spring cloud·面试
小欣加油25 分钟前
leetcode542 01矩阵
数据结构·c++·算法·leetcode·矩阵·bfs