当前位置: 首页 > news >正文

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

前言

题目大同小异,按要求来即可。

内容

一、二叉树的右视图

199.二叉树的右视图

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

广度优先搜索

取每层最后一个元素,放入结果集

func rightSideView(root *TreeNode) []int {var res []intif root==nil{return res}queue:=list.New()queue.PushBack(root)for queue.Len()>0{length:=queue.Len()for i:=0;i<length;i++{node:=queue.Remove(queue.Front()).(*TreeNode)if node.Left!=nil{queue.PushBack(node.Left)}if node.Right!=nil{queue.PushBack(node.Right)}if i==length-1{res=append(res,node.Val)}}}return res
}
深度优先搜索
func rightSideView(root *TreeNode)(ans []int){var dfs func(*TreeNode,int)dfs=func(node *TreeNode,depth int){if node==nil{return }if depth==len(ans){ans=append(ans,node.Val)}dfs(node.Right,depth+1)dfs(node.Left,depth+1)}dfs(root,0)return
}
 二、二叉树的层平均数

637.二叉树的层平均数

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。

广度优先搜索
func averageOfLevels(root *TreeNode) []float64 {var res []float64curLevel:=[]*TreeNode{root}for len(curLevel)>0{sum:=0nextLevel:=[]*TreeNode{}for _,node:=range curLevel{sum+=node.Valif node.Left!=nil{nextLevel=append(nextLevel,node.Left)}if node.Right!=nil{nextLevel=append(nextLevel,node.Right)}}res=append(res,float64(sum)/float64(len(curLevel)))curLevel=nextLevel}return  res
}
三、N叉树的层序遍历 

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。

广度优先搜素

一个结点有多个孩子,别忘了root为空

/*** Definition for a Node.* type Node struct {*     Val int*     Children []*Node* }*/func levelOrder(root *Node) [][]int {var res [][]intif root==nil{return res}curLevel:=[]*Node{root}for len(curLevel)>0{level:=[]int{}temp:=curLevelcurLevel=nilfor _,node:=range temp{level=append(level,node.Val)curLevel=append(curLevel,node.Children...)}//node.Children... 是一个可变参数,可以接收任意数量的子节点,并将它们存储在一个列表中。res=append(res,level)}return res
}

最后

平静,保持calm。脑子不太清醒,语言能力有点下降。。。好好休息!

http://www.lryc.cn/news/237971.html

相关文章:

  • 一个快递包裹的跨国之旅
  • qsort函数使用方法总结
  • 机器学习介绍与分类
  • linux控制台命令
  • 快时尚品牌Halara登上TikTok美国小店榜Top 5,运动健身风靡TikTok
  • Docker 安装 Oracle Database 23c
  • 什么是美国服务器,有哪些优势,适用于什么场景?
  • TeXLive 2023安装教程
  • uniapp中swiper 轮播带左右箭头,点击切换轮播效果demo(整理)
  • 网络连接Android设备
  • Redis(位图Bitmap和位域Bitfield)
  • 【ArcGIS】批量对栅格图像按要素掩膜提取
  • 二进制安装minio 并实现主从同步
  • React中封装echarts图表组件以及自适应窗口变化
  • 鸿蒙:使用Stack、ContentTable、Flex等组件和布局实现一个显示界面
  • 3.生成验证码 + 开发登录、退出功能 + 显示登录信息
  • 基于龙格-库塔算法优化概率神经网络PNN的分类预测 - 附代码
  • 2022最新版-李宏毅机器学习深度学习课程-P51 BERT的各种变体
  • JavaFX中Application、Stage、Scene和Parent的区别
  • ubuntu18.04 terminal打不开的解决方法
  • 部署Kubernetes Dashboard
  • Java对List的操作
  • git 将本地已有的一个项目上传到新建的git仓库的方法
  • 基于Docker的安装和配置Canal
  • 去除IDEA中代码的波浪线(黄色警示线)
  • 【Qt之QSplashScreen】开场动画使用:进度条加载及设置鼠标指针不转圈
  • WPF Button点击鼠标左键弹出菜单
  • http库requests
  • package.json 依赖版本中的符号含义
  • Python try except 用法