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

【代码随想录】算法训练计划17

1、 110.平衡二叉树

题目:
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
在这里插入图片描述

思路:
  • 经典后序遍历,感觉所有的后序遍历的二叉树都一样了
  • 因为要返回高度,所以新建一个dfs
  • go 没有abs函数?
func isBalanced(root *TreeNode) bool {return hou(root) != -1
}
func hou(node *TreeNode) int {if node == nil {return 0}leftHigh := hou(node.Left)if leftHigh == -1 {return -1}rightHigh := hou(node.Right)if rightHigh == -1 {return -1}if leftHigh-rightHigh > 1 || rightHigh-leftHigh > 1 {return -1}return 1+max(leftHigh, rightHigh)
}
func max(a,b int) int {if a>b {return a}; return b}

2、257. 二叉树的所有路径

题目:
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
在这里插入图片描述

思路:
  • 叶子节点特性,就是判断条件,就是左右为空
  • 条件判断
  • 注意 res 的声明与初始化
var res []string 
func binaryTreePaths(root *TreeNode) []string {res = []string{}path(root, "")return res
}
func path(node *TreeNode, list string)  {if node == nil {return }list += strconv.Itoa(node.Val)// 想清楚逻辑if node.Left == nil && node.Right == nil {res = append(res, list)} else {list += "->"path(node.Left, list)path(node.Right, list)}
}

3、404. 左叶子之和

题目:
给定二叉树的根节点 root ,返回所有左叶子之和。
在这里插入图片描述

思路:
  • 后序,左右中
  • 重点就是判断规则
  • 规则就是左节点之后处理一下是否拿这个节点的值!!!
func sumOfLeftLeaves(root *TreeNode) int {if root == nil {return 0}if root.Left == nil && root.Right == nil {return 0}// 叶子节点leftNumber := sumOfLeftLeaves(root.Left)if root.Left != nil && root.Left.Left==nil && root.Left.Right==nil {leftNumber = root.Left.Val}rightNumber := sumOfLeftLeaves(root.Right) // right就算是叶子节点,也不需要返回值// 这个条件怎么搞?return leftNumber+rightNumber
}
http://www.lryc.cn/news/225849.html

相关文章:

  • “护肤品销售策略:从“免费拼团”到“3人回本大放送”“
  • uniapp和vue3+ts开发小程序,使用vscode提示声明变量冲突解决办法
  • CCLink转Modbus TCP网关_MODBUS报文配置
  • 【开源】基于Vue.js的大学兼职教师管理系统的设计和实现
  • Mysql数据库 14.SQL语言 视图
  • 【Acwing171】送礼物(双向dfs)题解
  • 机器学习---多分类SVM、支持向量机分类
  • 玩转Linux基本指令
  • 【开源分享】国内可用的免费安卓GPT语音助手 - 可音量键唤起,可联网
  • 什么是安全平行切面
  • Git 入门使用 —— 建库、代码上下传、常用命令
  • HTML5学习系列之简单使用1
  • 计算机网络第一章(计算机网络开篇)
  • 百度秋招突击手册面试算法题:三数之和
  • 归并排序 图解 递归 + 非递归 + 笔记
  • 2023 年最好的 Android 系统修复/刷机应用程序和软件
  • Linux下内网穿透实现云原生观测分析工具的远程访问
  • 卡数据兼容性要求-M2M架构
  • C++入门篇3(类和对象【重点】)
  • 【开源】基于Vue.js的生活废品回收系统的设计和实现
  • Mysql配置主从复制-GTID模式
  • Flink之状态管理
  • [Mac软件]Adobe Media Encoder 2024 V24.0.2免激活版
  • Bytebase 2.11.0 - 支持 OceanBase Oracle 模式
  • 『CV学习笔记』文本识别算法CRNNSVTR介绍
  • HaaS510开板式DTU真机连云:上报监测数据至阿里云物联网平台
  • 贾扬清开源 AI 框架 Caffe | 开源英雄
  • 【objectarx.net】使用公式自动更新表格项的内容
  • CSS 移动端 1px(线条/边框) 不同机型上显示粗细不同,解决办法
  • vue3使用vuex的示例(模块化功能)