力扣刷题第二十六天--二叉树

前言

昨天看总决赛,差距太大,看的没意思,真的是一点变通没有啊。难受,没有写题的状态了。大概率是最后一次看比赛了,青春已复过,白日忽相催。召唤师要和生活对线了。英雄们的语音,台词,技能历历在目,再多不舍,也要说再见。Legends never die!调整状态,再出发!再高的山,再长的河,也会越过!

层序遍历的模板基本上就是这样,掌握好。

内容

一、二叉树的层序遍历

102.二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

本题为后端高频面试题,被收录于《热招技术岗上岸指南

广度优先搜素

层序遍历方式就是图论中的广度优先遍历,只不过我们应用在二叉树上

Go 复制代码
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
 //用切片模拟队列
func levelOrder(root *TreeNode) [][]int {
   var  res [][]int
   if root==nil{
       return res
   }
   curLevel:=[]*TreeNode{root}// 存放当前层节点
   for len(curLevel)>0{
       nextLevel:=[]*TreeNode{}// 准备通过当前层生成下一层
       vals:=[]int{}

       for _,node:=range curLevel{
           vals=append(vals,node.Val)// 收集当前层的值
           if node.Left!=nil{ // 收集下一层的节点
               nextLevel=append(nextLevel,node.Left)
           }
           if node.Right!=nil{
               nextLevel=append(nextLevel,node.Right)
           }
       }
       res=append(res,vals)
       curLevel=nextLevel// 将下一层变成当前层
   }
   return res
}
二、 二叉树的层序遍历II

107.二叉树的层序遍历II

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

广度优先搜素

上一题反转一下结果集即可

Go 复制代码
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func levelOrderBottom(root *TreeNode) [][]int {
     var res [][]int
     if root==nil{
         return res
     }
     curLevel:=[]*TreeNode{root}
     for len(curLevel)>0{
         nextLevel:=[]*TreeNode{}
         vals:=[]int{}
         for _,node:=range curLevel{
             vals=append(vals,node.Val)
             if node.Left!=nil{
                 nextLevel=append(nextLevel,node.Left)
             }
             if node.Right!=nil{
                 nextLevel=append(nextLevel,node.Right)
             }
         }
         res=append(res,vals)
        curLevel=nextLevel
     }
     n:=len(res)
     for i:=0;i<n/2;i++{
         res[i],res[n-1-i]=res[n-1-i],res[i]
     }
     return res
}

最后

为什么有的人总能保持高energy?你却总是消耗energy,导致没有精力做重要的事。内心充盈,精力充沛,才能吸引,影响别人!保护好自己的energy!!!

相关推荐
tyler_download10 分钟前
揉扁搓圆transformer架构:NAG优化器算法详解
深度学习·算法·transformer
weixin1997010801615 分钟前
[特殊字符]《京东POP二手品类对接:B2C订单模型 vs 二手C2C属性的字段转换难题》(附Python源码)
前端·python·算法
银空飞羽39 分钟前
职型求职工具实测:把简历分析、岗位匹配和定向优化串成一条求职链路
人工智能·经验分享·面试·职场和发展·跳槽·求职招聘·创业创新
进化矩阵1 小时前
别把指标当目的:当数字开始反噬你
大数据·人工智能·职场和发展·创业创新
Jared_devin1 小时前
单头、多头 Self-Attention可视化
人工智能·pytorch·深度学习·算法·机器学习·pycharm
wuyk5551 小时前
18.Kruskal 算法:用最短的边连成一张网
开发语言·算法·图论
pen-ai2 小时前
【优化方法】最小二乘:从误差平方到线性与非线性拟合
人工智能·算法·机器学习
名字还没想好☜2 小时前
Go 用 json.Decoder 流式解析大 JSON:边读边处理不爆内存
开发语言·后端·golang·go·json
Q26433650233 小时前
【有源码】基于机器学习的电信网络诈骗话术语义识别与可视化分析系统 XGBoost算法+Hadoop+Spark
大数据·hadoop·算法·机器学习·spark·毕业设计·课程设计
不会就选b3 小时前
算法日常・每日刷题--贪心<11>
算法·leetcode·职场和发展