当前位置:网站首页>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
}
边栏推荐
猜你喜欢
模糊查询like用法实例(Bee)
2022年金九银十,Android面试中高频必问的问题汇总
Informatics Olympiad All-in-One (1259: [Example 9.3] Find the longest non-descending sequence)
你是几星测试/开发程序员?技术型选手王大拿......
用户之声 | 我与GBase的缘分
Packages and packages, access modifiers
Li Mu hands-on learning deep learning V2-bert and code implementation
【SLAM】DM-VIO(ros版)安装和论文解读
HCIP--BGP基础实验
Jar包启动通过ClassPathResource获取不到文件路径问题
随机推荐
网上那么多教人赚钱的方法,但是你实际上是靠什么赚钱的呢?
Li Mu hands-on deep learning V2-BERT pre-training and code implementation
信息学奥赛一本通(1258:【例9.2】数字金字塔)
【模型压缩】实例分析量化原理
如何理解 swing 是非线程安全 (原创)
ABAP grammar small review
js如何获取浏览器缩放比例
Electrical diagram of power supply system
用户之声 | GBASE南大通用实训有感
EasyExcel dynamic parsing and save table columns
Golang source code analysis: time/rate
【实战 已完结】WPF开发自动化生产管理平台
传感器工作原理
什么是 IDE
Xcode13.1 run engineering error fatal error: 'IFlyMSC/IFly h' file not found
Packages and packages, access modifiers
C primer plus学习笔记 —— 9、联合&枚举&typdef
Day35 LeetCode
56.【全局变量和局部变量专题】
博客主页rrs代码