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

前言

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

内容

一、二叉树的右视图

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.mzph.cn/news/154952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Enterprise Architect安装与使用

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Enterprise Architect概述 官方网站&#xff1a;https://www.sparxsystems.cn/products/ea/&#xff1b;图示如下&#xff1a; Enterprise Architect是一个全功能的、基于…

虾皮选品免费工具:如何用知虾进行虾皮市场分析选品

在如今的电商时代&#xff0c;了解市场需求和选择热销产品是成功经营的关键。虾皮作为东南亚地区最大的电商平台之一&#xff0c;提供了一系列的选品工具&#xff0c;帮助卖家在市场竞争中脱颖而出。本文将介绍如何使用虾皮的免费工具——知虾进行虾皮市场分析选品&#xff0c;…

量子计算+物流!“最后一英里”配送难题Unisys成功实时决策

&#xff08;图片来源&#xff1a;网络&#xff09; 此前&#xff0c;供应链行业一直致力于手工操作&#xff0c;严重依赖于纸质系统。后来随着客户需求的不断变化&#xff0c;这种传统方法逐渐显出不足之处。供应链行业正在迅速转向现代化&#xff0c;采用自动化和数据驱动的…

一个快递包裹的跨国之旅

事情要从今年三月份说起&#xff0c;一位爱尔兰的同事在6月份结婚&#xff0c;团队同事准备了中国风的丝绸画轴、领带、丝巾作为礼物。3月份开始邮寄&#xff0c;4月初爱尔兰方面收件&#xff0c;5月份因为文件不足、不完整、不正确等原因被取消进口&#xff0c;7月份退回到大连…

Java使用Redis来实现分布式锁

Java使用Redis来实现分布式锁 在单节点服务中&#xff0c;我们可以使用synchronized来保证同一时间内只允许一个线程执行限定的代码块。但是如果我们是多节点服务呢&#xff0c;因为synchronized是针对服务内部的&#xff0c;其他服务是无法受到他的干预的。那么如何保证多个节…

02【SpringBoot静态处理、错误处理】

目录 一、SpringBoot的WEB开发 1.1 静态资源的处理 1.1.1 静态资源目录 1&#xff09;SpringBoot静态资源处理 2&#xff09;关于静态资源处理的配置 3&#xff09;欢迎页面的处理 4&#xff09;修改SpringBoot资源访问路径 1.1.2 WebJars资源 1.2 注册Servlet三大组件…

比起转本备考不努力,更让人痛心的是这五点

在转本考试中&#xff0c;有一部分同学花费了很多时间去学习&#xff0c;看似很努力&#xff0c;却没有太大的进步与成果。 比起不努力&#xff0c;努力了没有效果才是更让人心痛的。下面这五点行为&#xff0c;希望大家一定要避免&#xff01;一、纠结转本 我们身边可能不乏…

LeSS敏捷框架高效生产力实践

每个团队可能都有一套适合自己的敏捷方法&#xff0c;本文介绍了ResponseTap工程团队通过采用LeSS框架、引入准备周&#xff0c;从而提升迭代冲刺研发效能的实践。原文: LeSS Agile, More Productive — Part 1: Pain[1], LeSS Agile, More Productive — Part 2: Promise, LeS…

免费好用的第三方API汇总

天气预报查询&#xff1a;查询全国以及全球多个城市的天气&#xff0c;包含15天天气预报查询。空气质量查询&#xff1a;查询国内3400个城市的整点观测&#xff0c;获取指定城市的整点观测空气质量。分钟级降水预报&#xff1a;可准确提醒下一场雨何时出现&#xff0c;何时变大…

JavaFX中Application、Stage、Scene和Parent的区别

在JavaFX中&#xff0c;Application、Stage、Scene和Parent是用于构建图形用户界面&#xff08;GUI&#xff09;的关键组件&#xff0c;它们各自有不同的作用和责任。以下是它们之间的主要区别&#xff1a; 1、Application&#xff08;应用程序&#xff09; Application是Java…

全国的科技创新情况数据分享,涵盖2020-2022年三年情况

随着国家对科技创新的重视和大力支持&#xff0c;全国的科技创新情况越来越受到关注。 我们根据中国城市统计年鉴的这方面指标&#xff0c;分析汇总得出全国科技创新情况数据&#xff0c;需要说明的是&#xff0c;由于统计年鉴指标调整&#xff0c;每一年的数据并非字段相同&a…

c语言-浅谈指针(3)

文章目录 1.字符指针变量常见的字符指针初始化另一种字符指针初始化例&#xff1a; 2.数组指针变量什么是数组指针变量数组指针变量创建数组指针变量初始化例&#xff08;二维数组传参的本质&#xff09; 3.函数指针变量什么是函数指针变量呢&#xff1f;函数指针变量创建函数指…

风丘远程试验管理平台TFM 支持“一键式“数据管理和监控

随着信息技术的高速发展&#xff0c;企业对远程试验实时监控与数据管理的需求日益增强。而利用远程试验信息协同技术&#xff0c;可突破部门与地域的限制&#xff0c;并把试验现场的车辆状态信息、试验数据和分析结果实时传输给数据分析部门和设计部门等&#xff0c;从而缩短时…

mysql8 修改用户密码

适用于忘记了密码&#xff0c;但是工具能够进去。 命令&#xff1a; ALTER USER 用户名HOST字段 IDENTIFIED BY 新密码;

【图解算法】- 异位词问题:双指针+哈希表

一 - 前言 介绍&#xff1a;大家好啊&#xff0c;我是hitzaki辰。 社区&#xff1a;&#xff08;完全免费、欢迎加入&#xff09;日常打卡、学习交流、资源共享的知识星球。 自媒体&#xff1a;我会在b站/抖音更新视频讲解 或 一些纯技术外的分享&#xff0c;账号同名&#xff…

TCP传输的三次握手、四次挥手策略是什么

TCP协议是互联网中最常用的协议之一&#xff0c;它保证了数据在网络中的可靠传输。在TCP协议中&#xff0c;三次握手和四次挥手是非常重要的概念&#xff0c;对于理解网络通信和实现网络编程都至关重要。本文将介绍TCP传输的三次握手、四次挥手策略&#xff0c;并提供代码实现&…

物联网网关在工业行业的应用与优势

物联网网关在工业行业的应用与优势 随着科技的发展&#xff0c;物联网&#xff08;IoT&#xff09;在各个行业得到了广泛应用。工业行业是其中的一个重要领域。工业行业涉及到许多生产和运输环节&#xff0c;需要不断地监测和控制各个环节的数据和参数。物联网网关&#xff08…

2311rust,到74版本更新

1.66.0稳定版 显式判定有字段的枚举 即使有字段,带整数表示的枚举现在也可用显式判定器. #[repr(u8)] enum Foo {A(u8),B(i8),C(bool) 42, }跨语言边界传递值时,在两个语言中匹配枚举表示时,显式判定器非常有用.如 #[repr(u8)] enum Bar {A,B,C 42,D, }这里保证Bar枚举有…

Google Chrome 任意文件读取 (CVE-2023-4357)漏洞

漏洞描述 该漏洞的存在是由于 Google Chrome 中用户提供的 XML 输入验证不足。远程攻击者可以创建特制网页&#xff0c;诱骗受害者访问该网页并获取用户系统上的敏感信息。远程攻击者可利用该漏洞通过构建的 HTML 页面绕过文件访问限制&#xff0c;导致chrome任意文件读取。Li…

每日汇评:美日在两个月低点附近似乎较为脆弱,熊市可能会在FOMC会议纪要公布前暂停

美元/日元跌至两个月低点&#xff0c;并受到多种因素的压力&#xff1b; 美联储鸽派预期和美国债券收益率下降继续令美元承压&#xff1b; 美日利差缩小以及日本央行政策转变的押注提振了日元&#xff1b; 美元/日元货币对在周二持续第四天承受着沉重的卖压&#xff0c;同时也标…