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

出口网站有哪些临沧seo

出口网站有哪些,临沧seo,怎么做网站反向链接,公司弄个网站多少钱文章目录 654.最大二叉树思路代码 617.合并二叉树思路代码 700.二叉搜索树中的搜索思路代码 98.验证二叉搜索树思路官方题解代码困难 今日收获 654.最大二叉树 思路 前序遍历构造二叉树。 找出数组中最大值,然后递归处理左右子数组。 时间复杂度On2 空间复杂度On …

文章目录

  • 654.最大二叉树
    • 思路
    • 代码
  • 617.合并二叉树
    • 思路
    • 代码
  • 700.二叉搜索树中的搜索
    • 思路
    • 代码
  • 98.验证二叉搜索树
    • 思路
    • 官方题解
    • 代码
    • 困难
  • 今日收获


654.最大二叉树

思路

前序遍历构造二叉树。
找出数组中最大值,然后递归处理左右子数组。
时间复杂度On2
空间复杂度On

代码

func constructMaximumBinaryTree(nums []int) *TreeNode {imap:=make(map[int]int)for k,v:=range nums{imap[v]=k}res:=&TreeNode{}var build func(node *TreeNode,l,r int)build = func(node *TreeNode,l,r int){root:=max(nums[l:r+1])index:=imap[root]node.Val=rootif index>l{node.Left=&TreeNode{}build(node.Left,l,index-1)}if index<r{node.Right=&TreeNode{}build(node.Right,index+1,r)}}build(res,0,len(nums)-1)return res
}func max(s []int)int{res:=0for i:=0;i<len(s);i++{if res<s[i]{res=s[i]}}return res
}

617.合并二叉树

思路

递归构建。
目的是合并ab树,每一步递归要做的事当前节点的值为a树和b树相加,左子树为a树左子树和b树左子树递归合并,右子树为a树右子树和b树右子树递归合并。
时间复杂度On
空间复杂度On

代码

func mergeTrees(root1 *TreeNode, root2 *TreeNode) *TreeNode {res:=&TreeNode{}if root1==nil&&root2==nil{return nil}if root1!=nil&&root2!=nil{res.Val=root1.Val+root2.Valres.Left=mergeTrees(root1.Left,root2.Left)res.Right=mergeTrees(root1.Right,root2.Right)}else if root1!=nil{res.Val=root1.Valres.Left=mergeTrees(root1.Left,nil)res.Right=mergeTrees(root1.Right,nil)}else if root2!=nil{res.Val=root2.Valres.Right=mergeTrees(nil,root2.Right)res.Left=mergeTrees(nil,root2.Left)}return res
}

700.二叉搜索树中的搜索

思路

二叉搜索树中序遍历迭代即可
时间复杂度On

代码

func searchBST(root *TreeNode, val int) *TreeNode {stack:=[]*TreeNode{}cur:=rootfor cur!=nil||len(stack)>0{for cur!=nil{stack=append(stack,cur)cur=cur.Left}cur=stack[len(stack)-1]if cur.Val==val{return cur}stack=stack[:len(stack)-1]cur=cur.Right}return nil
}

98.验证二叉搜索树

思路

递归,每一层递归的目的是判断当前节点的左右子树的所有节点是否都小于或大于当前节点,然后再递归地判断左右子树是否是二叉搜索树。
时间复杂度Onlogn
还可以优化

官方题解

要知道中序遍历下,输出的二叉搜索树节点的数值是有序序列。
有了这个特性,验证二叉搜索树,就相当于变成了判断一个序列是不是递增的了。
时间复杂度On

代码

func isValidBST(root *TreeNode) bool {if root==nil{return true}if root.Left!=nil{ml,_:=maxmin(root.Left)if ml>=root.Val{return false}}if root.Right!=nil{_,mr:=maxmin(root.Right)if mr<=root.Val{return false}}return isValidBST(root.Left)&&isValidBST(root.Right)
}func maxmin(root *TreeNode) (int,int){max,min:=root.Val,root.Valif root.Left!=nil{maxl,minl:=maxmin(root.Left)if max<maxl{max=maxl}if min>minl{min=minl}}if root.Right!=nil{maxr,minr:=maxmin(root.Right)if max<maxr{max=maxr}if min>minr{min=minr}}return max,min
}

困难

开始递归的条件和者终止条件要保持一致性,比如默认只有节点不为空才开始递归,那么终止条件就可以不写节点为空。


今日收获

根据数组构建二叉树的统一写法。
res:=&TreeNode{}
res.Val=…
res.Left=递归…
验证二叉搜索树的写法。

http://www.zhongyajixie.com/news/11508.html

相关文章:

  • 做网站运营话术百度权重怎么查询
  • 湖南网站搜索排名优化公司营销型网站的公司
  • 做公司网站需要多久百度商家
  • 学网页设计需要什么学历seo优化与品牌官网定制
  • 中国的网站为什么要备案长尾关键词是什么
  • 巩义做网站优化营销页面设计
  • 中文域名网站标识市场调研的方法有哪些
  • 网站开发要会英语吗重庆seo博客
  • 广州哪里有做网站推广免费推广网站大全集合
  • 做外贸的网站哪个好百度网站如何优化排名
  • 什么是手机网站建设网络营销经典失败案例
  • 简阳市市建设委员会网站优秀的软文
  • 做本地的分类信息网站南京seo域名
  • 计算机网站建设论文范文沪深300指数是什么意思
  • 医院网站怎么做厦门seo优化多少钱
  • 建个小型网站虚拟主机 vpsseo自学网视频教程
  • 网站空间 云端网络推广策划案
  • 烟台 网站设计网销怎么销售的
  • 重庆涪陵网站建设凡科建站客服电话
  • 简单的阿里云建设网站竞价点击软件工具
  • 做外贸网站咨询广东培训seo
  • 网站建设服务费怎么做会计分录品牌推广计划
  • 长沙做网站的平谷头条新闻
  • 规划网站站点需要遵循哪些原则seo门户网价格是多少钱
  • 怎么做符合seo的网站网站seo优化培训
  • 电脑网站建设方案厦门seo结算
  • 湖南省郴州市有哪些县安徽网络优化公司排名
  • 视频点播网站建设免费发布推广信息的平台
  • 微盟集团百度seo外链推广教程
  • 游戏网站有哪些seo标签优化