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

前言

三十天了,看记录,是从10.17开始的,差不多就是中间有一个星期因为种种原因没写或者是偷懒了。不学习又能干嘛呢,无趣的刷视频?什么都不干?内心空虚,那就充实它!

树还是有难度的,才刚开始。不要放弃!!!

内容

一、平衡二叉树

110.平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

递归
func isBalanced(root *TreeNode) bool {
  h:=getHeight(root)
  if h==-1{
      return false
  }
   return true
}

func getHeight(root *TreeNode)int{
       if root==nil{
         return 0
     }
     l,r:=getHeight(root.Left),getHeight(root.Right)
     if l==-1||r==-1{
         return -1//返回-1 来标记已经不符合平衡树的规则了
     }
     if l-r>1||r-l>1{
         return -1
     }
     return max(l,r)+1
}
func max(a,b int)int{
    if a>b{
        return a
    }
    return b
}
二、二叉树的所有路径

257.二叉树的所有路径

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。

深度优先搜索
func binaryTreePaths(root *TreeNode) []string {
    res:=make([]string,0)
    var travel func(node *TreeNode,s string)
     travel=func(node *TreeNode,s string){
         if node.Left==nil&&node.Right==nil{
             v:=s+strconv.Itoa(node.Val)
             res=append(res,v)

         }
          s=s+strconv.Itoa(node.Val)+"->"
          if node.Left!=nil{
              travel(node.Left,s)
          }
          if node.Right!=nil{
              travel(node.Right,s)
          }
     }
     travel(root,"")
     return res
}

最后

周末了,写个总结吧。虽然今天有点犯懒。。。


http://www.niftyadmin.cn/n/5211381.html

相关文章

convertRect:toView 方法注意事项

这是在网上找到的一张图 我们开发中有时候会用到左边转换,convertRect:toView 通常情况下,我们回这样使用 CGRect newRect [a convertRect:originframe toView:c];其中newRect和 originframe的size相同,只改变origin newRect.origin a…

【Linux】匿名管道+进程池

文章目录 前置知识一、管道的原理二、管道的特性三、管道的接口四、使用管道实现简单的进程池解决进程池的一个小问题 前置知识 一个进程在创建时,会默认打开三个文件,分别是:stdin,stdout,stderr 进程中有一个维护进…

js粒子效果(一)

效果: 代码: <!doctype html> <html> <head><meta charset"utf-8"><title>HTML5鼠标经过粒子散开动画特效</title><style>html, body {position: absolute;overflow: hidden;margin: 0;padding: 0;width: 100%;height: 1…

jenkins + gitlab 自动部署(webhook)

Jenkins是一个流行的开源CI/CD工具&#xff0c;可以与Git等版本控制系统集成&#xff0c;实现自动构建、测试和部署。Webhook是一种机制&#xff0c;可以在Git仓库中设置&#xff0c;在代码提交或合并请求时触发Jenkins构建任务&#xff0c;以完成自动化部署。 实操 设备信息 …

csrf漏洞修复

漏洞说明&#xff1a;通过篡改请求头中的Referer值依旧能够访问到接口。 通过http请求头里面的Referer随意访问接口 通过下面两个代码类程序来实现你的程序不会被攻击&#xff0c;里面有两个实体&#xff0c;如果你感觉这个程序对你有用&#xff0c;联系我&#xff0c;我私发…

R语言——taxize(第五部分)

taxize&#xff08;第五部分&#xff09; 3. taxize 文档中译3.71. nbn_synonyms&#xff08;从 NBN 返回具有给定 id 的分类群名称的所有同义词&#xff09;3.72. ncbi_children&#xff08;在 NCBI 中搜索类群的子类群&#xff09;3.73. ncbi_downstream&#xff08;检索 NCB…

P9 C++类

目录 01 类是什么 02 如何创建类 03 方法 后话 本期我们要讲的是 C 中的类。 我们终于讲到了面向对象编程&#xff0c;这是一种非常流行的编程方式&#xff0c;面向对象编程实际上只是一种你可以采用的编写代码的方式&#xff0c;其他语言例如 C#、Java 这些主要是面向对象…

【方法】如何打开设置了密码的RAR文件?

RAR是一种常用的压缩文件格式&#xff0c;有时候为了保护文件的私密性&#xff0c;我们还会给RAR压缩文件设置密码&#xff0c;那设置了密码的RAR文件要怎么打开呢&#xff1f; 有密码的RAR文件也需要使用解压缩软件才能打开&#xff0c;最常用的是WinRAR软件。WinRAR是一款常…