首页 > 其他分享 >103. 二叉树的锯齿形层序遍历(中)

103. 二叉树的锯齿形层序遍历(中)

时间:2023-12-22 16:00:30浏览次数:42  
标签:re1 cur 队列 层序 列表 二叉树 103 节点 append

目录

题目

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

题解:BFS

  • 用BFS把每一层的结点存在一个列表里面,然后判断一下如果是偶数层就翻转列表,最后都加入结果列表返回即可
class Solution:
    def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
         if not root:# 如果根节点为空,直接返回空列表
             return []
         q = []  # 用一个列表做队列
         re = [] # 存储结果的列表
         q.append(root)  # 把起点放入队列
         step = 1   # 记录当前层的编号
         while q:  # 当队列不为空时
             size = len(q)
             re1=[]# 存储当前层的结果
             # 将当前队列中的所有节点向四周扩散
             for _ in range(size):
                 cur = q.pop(0)  # 从头部取出节点
                 re1.append(cur.val) # 将当前节点的值加入当前层的结果列表
                 if cur.left is not None:
                     q.append(cur.left) # 将左子节点加入队列
                 if cur.right : # 将cur的相邻节点加入队列 
                     q.append(cur.right) # 将右子节点加入队列
                     
             if step%2==0:# 如果当前层的编号为偶数,将结果列表反转
                re1.reverse() 
             re.append(re1) # 将当前层的结果列表加入最终结果列表
             step += 1  # 增加步数
         return re

标签:re1,cur,队列,层序,列表,二叉树,103,节点,append
From: https://www.cnblogs.com/lushuang55/p/17921600.html

相关文章

  • 二叉树
    一.二叉树的概念1.二叉树的性质二叉树的每个节点最多有两个子节点,分别称为左孩子和右孩子,以他们为根的子树称为左子树和右子树。二叉树的第i层最多有2^(i-1)个节点。如果每层的节点数都是满的,称他为满二叉树。图例:如果这个二叉树只是在最后一层有缺失,且......
  • Fastjson2基础使用以及底层序列化/反序列化实现探究
    来自于:https://www.cnblogs.com/6b7b5fc3/p/17134421.html1Fastjson2简介Fastjson2是Fastjson的升级版,特征:协议支持:支持JSON/JSONB两种协议部分解析:可以使用JSONPath进行部分解析获取需要的值语言支持:Java/Kotlin场景支持:Android8+/服务端其他特性支持:GraalNative-Image......
  • 21_从中序与后序遍历序列构造二叉树
    106.从中序与后序遍历序列构造二叉树给定两个整数数组inorder和postorder,其中inorder是二叉树的中序遍历,postorder是同一棵树的后序遍历,请你构造并返回这颗二叉树。示例1:输入:inorder=[9,3,15,20,7],postorder=[9,15,7,20,3]输出:[3,9,20,null,null,15,7]......
  • 相同二叉树和镜面二叉树问题
    相同二叉树和镜面二叉树问题作者:Grey原文地址:博客园:相同二叉树和镜面二叉树问题CSDN:相同二叉树和镜面二叉树问题判断两棵树是否是相同的树题目描述见:LeetCode100.SameTree即:如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。比如:两个树结构完全一致,对......
  • 1038:苹果和虫子 in、out完善
    时间限制:1000ms      内存限制:65536KB提交数:215194   通过数:62609【题目描述】你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?【输......
  • Python算法——二叉树遍历
    Python中的二叉树遍历算法详解二叉树是一种常见的树状数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。遍历二叉树是访问树的所有节点并按照特定顺序输出它们的过程。在本文中,我们将讨论二叉树的三种主要遍历算法:前序遍历、中序遍历和后序遍历,并提供相应的Python代码......
  • java实现二叉树前序搜索输出深度完整代码
    importjava.util.Scanner;//1:无需package//2:类名必须Main,不可修改classTreeNode{publicintval;publicTreeNodeleft;publicTreeNoderight;publicTreeNode(intval){this.val=val;this.left=null;this.right=null;}}p......
  • C语言 层次遍历二叉树
    代码如下#include<stdio.h>#include<stdlib.h>#defineMax_Size50typedefstructbitree{chardata;intlevel;structbitree*lchild;structbitree*rchild;}BiTreeNode,*BiTree;typedefstructqueue{BiTreeData[Max_Size];......
  • C++U5-10-二叉树3
    学习目标 二叉树重建的概念 二叉树重建流程 例题和解题思路 2 3 4 5 [【二叉树】求先序排列]  代码【算法分析】后序遍历的最后一个是根节点,由这个根节点可以在中序遍历中确定左子树和右子树的大小和元素,然后递归的去处理左子树和右子树,由于是......
  • 【教3妹学编程-算法题】反转二叉树的奇数层
    3妹:“你不是真正的快乐,你的笑只是你穿的保护色”2哥 :3妹还在唱五月天的歌啊,你不知道五月天假唱,现在全网都在骂呢。3妹:知道啊,可是关我什么事,这个歌的确好听啊。2哥 :嗯嗯,不错,还以为你是脑残粉,无论黑白都只管追星呢。3妹:我是只管追歌的,歌好听就行啦。2哥 :追哥?追哪个哥,难......