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

力扣二叉树--第三十五天

前言

二叉搜索树,写了一道题,第二题没写出来。明天再写吧。。。

内容

一、二叉搜索树中的搜索

700. 二叉搜索树中的搜索

给定二叉搜索树(BST)的根节点 root 和一个整数值 val

你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。

递归

二叉搜索树,也称二叉排序树或二叉查找树

  • 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  • 它的左、右子树也分别为二叉搜索树

时间复杂度:O(N),其中 N 是二叉搜索树的节点数。最坏情况下二叉搜索树是一条链,且要找的元素比链末尾的元素值还要小(大),这种情况下我们需要递归 N 次。

空间复杂度:O(N)。最坏情况下递归需要 O(N) 的栈空间。

func searchBST(root *TreeNode, val int) *TreeNode {if root==nil{return root}if root.Val==val{return root}if root.Val>val{// result:= searchBST(root.Left,val)// return resultreturn searchBST(root.Left,val)}//习惯直接写 searchBST(root.left, val),却忘了递归函数还有返回值
//   result:=searchBST(root.Right,val)
//    return resultreturn searchBST(root.Right,val)
}
迭代

节点的有序性就帮我们确定了搜索的方向

时间复杂度:O(N),其中 N 是二叉搜索树的节点数。最坏情况下二叉搜索树是一条链,且要找的元素比链末尾的元素值还要小(大),这种情况下我们需要递归 N 次。

空间复杂度:O(1)。没有使用额外的空间。

func searchBST(root *TreeNode,val int)*TreeNode{for root!=nil{if root.Val>val{root=root.Left}else if root.Val<val{root=root.Right}else{return root}}return nil
}

最后

怎么写了十天的递归迭代,遇到题还是写不出来。。。沉淀!

http://www.lryc.cn/news/248689.html

相关文章:

  • 先喝点水,这期程序员兼职干货没有水分!
  • vue3通过el-dropdown实现动态菜单切换页面
  • go学习之文件操作与命令行参数
  • 面试题:海量PDF的OCR处理思路
  • [原创][2]探究C#多线程开发细节-“线程的无顺序性“
  • 【精选】Spring整合MyBatis,Junit 及Spring 事务Spring AOP面向切面详解
  • 获取Spring容器Bean工具类
  • 图面试专题
  • VUE的计算属性
  • uniapp中使用pageScrollTo让页面滚动到固定节点或距离
  • 使用机器学习方法进行分析和处理:对高质量图像进行压缩
  • 多线程面试总结
  • android11-隐藏状态栏和导航栏
  • 血的教训--kail系统免密centos7的坑【高版本ssh免密低版本ssh的坑】
  • javaagent字节码增强浅尝
  • 计算机组成原理-Cache替换算法
  • Adobe 家族系列download
  • 97.STL-查找算法 find
  • 如何应对雨天飞行的挑战?无人机机库防护能力解析
  • 机器学习笔记 - 3D数据的常见表示方式
  • 【Node.js】解决npm报错:RequestError: unable to verify the first certificate
  • 语言模型文本处理基石:Tokenizer简明概述
  • 淘宝商品详情数据接口(店铺搬家、数据分析、代购商城、ERP选品、无货源铺货、品牌监控)
  • 面试篇之微服务(一)
  • 智慧科研助力科研数据的分析处理
  • el-select实现分屏效果
  • 微信小程序本地和真机调试文件上传成功但体验版不成功
  • windows系统用nginx部署web应用
  • 如何利用Python进行数据归一化?
  • Linux 基本语句_13_消息队列