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

山东天成水利建设 网站网站seo源码

山东天成水利建设 网站,网站seo源码,做网站前台用什么问题,汽车设计网站大全day 21 1、530. 二叉搜索树的最小绝对差 题目: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 思路: 利用了二叉搜索树的中序遍历特性用了双指…

day 21

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

题目:
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数,其数值等于两值之差的绝对值。
在这里插入图片描述

思路:
  • 利用了二叉搜索树的中序遍历特性
  • 用了双指针,不用也可以
func getMinimumDifference(root *TreeNode) int {// 好简单,但是还是看了两眼题解,因为恐惧,下次要尝试脱离看题解了,代码一刷,中序遍历var pre *TreeNodemin := math.MaxInt64var travel func(node *TreeNode) travel = func(node *TreeNode) {if node == nil {return}travel(node.Left)if pre != nil && node.Val - pre.Val < min {min = node.Val - pre.Val}pre = nodetravel(node.Right)}travel(root)return min
}

2、501. 二叉搜索树中的众数

题目:
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。
如果树中有不止一个众数,可以按 任意顺序 返回。

思路:
  • 我第一次是自己写的,用的笨方法,遍历了两边map
  • 可以看看计数法,也很简单,但是不需要额外空间了,卡哥的文档有写
func findMode(root *TreeNode) []int {// 放进mapmap1 := make(map[int]int, 0)zs := []int{}var travel func(node *TreeNode) travel = func(node *TreeNode) {if node == nil {return}travel(node.Left)map1[node.Val]++travel(node.Right)} travel(root)a := 0for _,v := range map1 {if v > a {a = v}}for k,v := range map1 {if v == a {zs = append(zs, k)}}return zs
}

3、236. 二叉树的最近公共祖先

题目:
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
在这里插入图片描述

思路:
  • 代码一刷,后序遍历
  • 后序遍历很像回溯,注意节点
func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {// 代码一刷,后序遍历if root == nil {return root}if root == p || root == q {return root}left := lowestCommonAncestor(root.Left, p, q)right  := lowestCommonAncestor(root.Right, p, q)if left != nil && right != nil {return root}if left != nil {return left}if right != nil {return right}return nil
}

day 22

1、235. 二叉搜索树的最近公共祖先

题目:
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]
在这里插入图片描述

思路:
  • 利用二叉搜索树特点,注意最后是 <= 0
func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {//代码一刷if root == nil {return nil}for {if root.Val > q.Val && root.Val > p.Val {root = root.Left}if root.Val < q.Val && root.Val < p.Val {root = root.Right}if (root.Val - p.Val) * (root.Val - q.Val) <= 0 {return root}}return root
}

2、701. 二叉搜索树中的插入操作

题目:
给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。
注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。
在这里插入图片描述

思路:
  • 怎么我的写法就比卡尔的长了这么多代码
func insertIntoBST(root *TreeNode, val int) *TreeNode {if root == nil {return &TreeNode{Val:val}}travel(root,val)return root
}
func travel(node *TreeNode, val int) {if node == nil {return}if node.Val > val {if node.Left != nil {travel(node.Left, val)} else {node.Left = &TreeNode{Val:val}return}}if node.Val < val {if node.Right != nil {travel(node.Right, val)} else {node.Right = &TreeNode{Val:val}return}}return
}

3、450. 删除二叉搜索树中的节点

题目:
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。
一般来说,删除节点可分为两个步骤:
首先找到需要删除的节点;
如果找到了,删除它。
在这里插入图片描述

思路:
  • 同样的,利用二叉树特性
func deleteNode(root *TreeNode, key int) *TreeNode {// 看卡哥视频写的代码可以,看不懂文档的代码if root == nil {return nil}if key == root.Val {if root.Left == nil && root.Right == nil {return nil}if root.Left != nil && root.Right == nil {return root.Left}if root.Right != nil && root.Left == nil {return root.Right}// 左右都不为空cur := root.Rightfor cur.Left != nil {cur = cur.Left}cur.Left = root.Leftreturn root.Right}if key > root.Val {root.Right =  deleteNode(root.Right,key)}if key < root.Val {root.Left = deleteNode(root.Left,key)}return root
}
http://www.15wanjia.com/news/47456.html

相关文章:

  • 北海网站建设网络公司企业网站设计模板
  • 网站开发有那些费用上海seo顾问
  • 网站如何做网站名称网页设计
  • 有哪些做调查问卷的赚钱网站百度提交收录
  • java如何做公司网站长沙seo培训班
  • 免费建个人网站步骤汕头网站推广
  • 音乐网站建立免费刷粉网站推广
  • 河南做网站高手排名短视频代运营合作方案
  • sql数据库查询网站模板河南百度关键词优化排名软件
  • 怎样学习做网站重庆百度地图
  • 美国主机教育网站建设爱网
  • 个人网站备案注销广告公司的业务范围
  • 一个网站备案多个域名吗合肥优化推广公司
  • 手机网站做适配济南搜索引擎优化网站
  • 为客户做网站的方案搜索引擎营销方法主要有三种
  • 句容做网站常见的网络营销手段
  • 网站建设龙兵科技极速一区二区三区精品
  • 西安医院网站建设重庆疫情最新情况
  • 临朐网站建设建站首选哪家公司如何推广网址链接
  • 怎么推广自己的公司网站sem和seo区别与联系
  • 网站对接如何做企业管理培训机构排名前十
  • 马云做的国外的网站叫什么名字网络营销论文毕业论文
  • 久久建筑网下载插件怎么下载净水器网络推广优化方案
  • 温州市网络公司网站建设公司网络营销的产品策略
  • 哪个网站容易做二级域名武汉seo首页优化公司
  • 软件推广平台有哪些?哪个比较好四平网站seo
  • 如何做公司介绍视频网站厦门seo网站推广优化
  • 电子游戏设计方案关键词seo是什么意思
  • wordpress复制网站免费推广广告链接
  • 常州高端模板建站建站平台哪家好