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

代码随想录二刷 530 二叉搜索树的最小绝对差 98. 验证二叉搜索树 700. 二叉搜索树中的搜索

530 二叉搜索树的最小绝对差

代码如下 

func getMinimumDifference(root *TreeNode) int {

          var pre *TreeNode 

          res := math.MaxInt

          var traverse func(root * TreeNode) 

          traverse = func(root * TreeNode)  {  

                 if root == nil {             

                     return 

                 }

                traverse(root.Left)        定义两个指针,一个pre指针,一个为当前节点的root指针,因为是二叉搜索树,所以用中序遍历是递增序列  

                if pre != nil && root.Val - pre.Val < res {   当前一个节点不为空,那么比较前一个节点和当前节点的值,如果比之前的最小差值小,那么就更新最小差值 

                           res = root.Val - pre.Val

                }

                pre = root    此时将pre指针更新,root指针指向下一个节点

                traverse(root.Right)

                

          }

           traverse(root)

           return res 

}

func min(a,b int) int {

    if a < b {

        return a 

    }else {

        return b 

    }

}

98. 验证二叉搜索树

代码如下

func isValidBST(root *TreeNode) bool {

         var pre *TreeNode 

         var traverse func(root *TreeNode) bool 

         traverse = func(root *TreeNode) bool {

             if root == nil {         如果是空节点也是二叉搜索树 

                 return true 

             }

             leftres := traverse(root.Left)    遍历左子树,并收集左子树的结果

             if pre != nil && root.Val <= pre.Val {  因为用中序遍历二叉搜索树是一个升序序列。如果前一个节点比当前节点大,说明不是二叉搜索树

                 return false 

             }

             pre = root      更新pre指针,并且root指向下一个节点 

             rightres := traverse(root.Right)

             return rightres && leftres    返回左子树和右子树的结果 

         }

         return traverse(root)

}

700. 二叉搜索树中的搜索 

代码如下

func searchBST(root *TreeNode, val int) *TreeNode {

               if root == nil || root.Val == val {  

                   return root 

               }

               if root.Val > val {  利用二叉搜索树的特点,如果当前节点值大于要找的值,则向当前节点的左子树寻找

                  return searchBST(root.Left,val)

               }

               return searchBST(root.Right,val)  如果当前节点的值小于要找的值,则向当前节点的右子树寻找 

}

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

相关文章:

  • Docker安装——CentOS7.6(详细版)
  • 论信息系统项目的整体管理(范文)
  • 【音视频处理】音频编码AAC详解,低码率提高音质?
  • 逆函数学习
  • 代码审计——SSRF详解
  • 搭建Scala开发环境
  • BLIP和BLIP2
  • 微信小程序开发实战 ⑨(TabBar)
  • 微前端探秘:初始微前端、现有方案和未来趋势
  • 运维(SRE)成长之路-第2天 文本编辑工具之神VIM
  • 45从零开始学Java之详解static修饰符、静态变量和静态方法
  • 电商超卖,从业务到设计
  • 【MySQL】表的约束
  • 【计算机网络】第一章 概述(下)
  • 化工园区人员全过程轨迹化安全解决方案
  • Java泛型中的T、E、K、V、?通配符,你确定都了解吗?
  • Jenkins部署及使用
  • UML类图(二)
  • 【IoU全总结】GIoU, DIoU, CIoU, EIoUFocal, αIoU, SIoU,WIoU【基础收藏】
  • docker 安装 mysql
  • Java 流程控制之 for 循环
  • Kubernetes那点事儿——暴露服务之Ingress
  • 八股文总结
  • 【浅学 MyBatis 】
  • Windows版Redis安装
  • Flume面试题二十道
  • 单链表OJ题:LeetCode--138.复制带随即指针的链表
  • Chapter7: SpringBoot与数据访问
  • 【Sqlite3】maraidb和sqlite3部分命令操作区别
  • Linux中新建用户使用sudo问题