当前位置:网站首页>golang刷leetcode: 在每个树行中找最大值
golang刷leetcode: 在每个树行中找最大值
2022-08-02 20:37:00 【用户9710217】
给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。
示例1:
输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]
示例2:
输入: root = [1,2,3]
输出: [1,3]
提示:
二叉树的节点个数的范围是 [0,104]
-231 <= Node.val <= 231 - 1
解题思路:
1,二叉树的题都不绕简单明了,本题常见两种解法
A,广度优先遍历
B,深度优先遍历
2,广度优先遍历思路:用两个队列交替存储每一行,求出每个队列中的最大值即可。
3,深度优先遍历:深度优先一般是递归解,每次递归的时候记录当前访问的深度,递归过程中对相同深度的取最大值。
代码实现:
广度优先遍历:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func largestValues(root *TreeNode) (r []int ){
if root==nil{
return []int{}
}
var q1,q2 []*TreeNode
q1=append(q1,root)
for len(q1)>0 {
v:= q1[0].Val
for len(q1)>0{
h:=q1[0]
q1=q1[1:]
if h.Val > v {
v= h.Val
}
if h.Left!=nil{
q2=append(q2,h.Left)
}
if h.Right!=nil{
q2=append(q2,h.Right)
}
}
r=append(r,v)
if len(q2)>0{
v:=q2[0].Val
for len(q2)>0{
h:=q2[0]
q2=q2[1:]
if h.Val>v{
v=h.Val
}
if h.Left!=nil{
q1=append(q1,h.Left)
}
if h.Right!=nil{
q1=append(q1,h.Right)
}
}
r=append(r,v)
}
}
return r
}深度优先遍历
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func largestValues(root *TreeNode) (r []int ){
var dfs func(root*TreeNode,depth int)
dfs=func(root*TreeNode,depth int){
if root==nil{
return
}
if len(r)==depth{
r=append(r,root.Val)
}else{
if root.Val>r[depth]{
r[depth]=root.Val
}
}
dfs(root.Left,depth+1)
dfs(root.Right,depth+1)
}
dfs(root,0)
return r
}边栏推荐
- [C题目]力扣234. 回文链表
- Mysql用户管理
- 李沐动手学深度学习V2-BERT预训练和代码实现
- arm64麒麟安装paddlehub(国产化)
- How the sensor works
- C# Monitor类
- The time series database has been developed for 5 years. What problem does it need to solve?
- postgresql autovaccum自动清理
- A brief discussion on the transformation of .NET legacy applications
- 10 种最佳 IDE 软件 ,你更忠爱哪一个?
猜你喜欢
随机推荐
X 2 Earn必须依靠旁氏启动?GameFi的出路在哪?(下)
解道8-编程技术5
2022年金九银十,Android面试中高频必问的问题汇总
[C题目]力扣142. 环形链表 II
56.【全局变量和局部变量专题】
汉源高科千兆4光4电工业级网管型智能环网冗余以太网交换机防浪涌防雷导轨式安装
.NET如何快速比较两个byte数组是否相等
浅议.NET遗留应用改造
接口测试常用工具及测试方法(入门篇)
HCIP--路由策略实验
如何使用windbg查看C#某个线程的栈大小 ?
解道9-编程技术6
封装和包、访问修饰权限
2170. 使数组变成交替数组的最少操作数
信息学奥赛一本通(1260:【例9.4】拦截导弹(Noip1999))
用户之声 | 大学生的“课外学堂”
HCIP--BGP基础实验
.NET performance optimization - you should set initial size for collection types
【实战 已完结】WPF开发自动化生产管理平台
OP-5,输入/输出信号范围-一信号处理能力






