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

做网站大家都找谁公司网站改版需要怎么做

做网站大家都找谁,公司网站改版需要怎么做,wordpress折叠菜单插件,wordpress开发文档二叉树相关推荐 107.二叉树的层次遍历II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的下一个右侧节点指针117.填充每个节点的下一个右侧节点指针II总结 107.二叉树的层次遍历II 切片本质是一个结构体#xff0c;包含… 二叉树相关推荐 107.二叉树的层次遍历II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的下一个右侧节点指针117.填充每个节点的下一个右侧节点指针II总结 107.二叉树的层次遍历II 切片本质是一个结构体包含一个指向底层数组的指针(prt)长度len容量cap。如果通过函数对切片进行赋值修改会传递到函数外但如果在函数内对切片进行扩容会产生新的底层数组但数组外的切片仍指向原来的旧切片进而导致对切片的修改无法传递到函数外 (1)递归 func levelOrderBottom(root *TreeNode) [][]int {res : [][]int{}var help func(root *TreeNode, depth int) help func(root *TreeNode, depth int) {if root nil {return}if depth len(res) {res append(res, []int{})}res[depth] append(res[depth], root.Val)depthhelp(root.Left, depth)help(root.Right, depth)} help(root, 0)for i, j : 0, len(res) - 1; i j; i, j i 1, j - 1 {res[i], res[j] res[j], res[i]}return res } (2)层序 func levelOrderBottom(root *TreeNode) [][]int {res : [][]int{}if root nil {return res}node : rootqueue : []*TreeNode{root}for len(queue) 0 {size : len(queue)vals : []int{}for i : 0; i size; i {node queue[0]queue queue[1:]vals append(vals, node.Val)if node.Left ! nil {queue append(queue, node.Left)}if node.Right ! nil {queue append(queue, node.Right)}}// 反向插入结果res append(res, []int{})copy(res[1:], res[0:])res[0] vals}return res }199.二叉树的右视图 (1)递归 中—右—左顺序访问保证了每层最先访问的是最右边节点 如果当前节点的高度等于len(res)将其值加入res。当前节点类似于为res扩张探路。 func rightSideView(root *TreeNode) []int {res : []int{}var help func(root *TreeNode, depth int)help func(root *TreeNode, depth int) {if root nil {return}if depth len(res) {res append(res, root.Val)}depthhelp(root.Right, depth)help(root.Left, depth)}help(root, 0)return res }(2)层序 func rightSideView(root *TreeNode) []int {res : []int{}if root nil {return res}curQueue : []*TreeNode{root}for len(curQueue) 0 {nextQueue : []*TreeNode{}size : len(curQueue)for i : 0; i size; i {node : curQueue[i]if node.Left ! nil {nextQueue append(nextQueue, node.Left)}if node.Right ! nil {nextQueue append(nextQueue, node.Right)}if i size - 1 {res append(res, node.Val)}}curQueue nextQueue}return res }637.二叉树的层平均值 (1)递归 创建结构体nodeGroup存储当前层node个数和sum 类似上题解法若当前节点高度小于len(nodeGroup)对当前层nodeGroup的count和sum进行更新【count1,sumroot.val】若当前节点高度等于len(nodeGroup)创建新的层并对count和sum赋值【count1,sumroot.val】。 type nodeGroup struct {Count intsum int }func averageOfLevels(root *TreeNode) []float64 {res : []float64{}resGroup : []nodeGroup{{0, 0}}var help func(root *TreeNode, depth int)help func(root *TreeNode, depth int) {if root nil {return}if depth len(resGroup) {resGroup[depth].CountresGroup[depth].sum root.Val} else {resGroup append(resGroup, nodeGroup{1, root.Val})}depthhelp(root.Left, depth)help(root.Right, depth)}help(root, 0)for _, countSum : range resGroup {avg : float64(countSum.sum) / float64(countSum.Count)res append(res, avg)}return res }(2)层序 func averageOfLevels(root *TreeNode) []float64 {res : []float64{}curQueue : []*TreeNode{root}for len(curQueue) 0 {size : len(curQueue)sum : 0nextQueue : []*TreeNode{}for _, node : range curQueue {sum node.Valif node.Left ! nil {nextQueue append(nextQueue, node.Left)}if node.Right ! nil {nextQueue append(nextQueue, node.Right)}}res append(res, float64(sum)/float64(size))curQueue nextQueue}return res }429.N叉树的层序遍历 (1)递归追加当前层数据如果当前节点高度等于len(res)创建新层。 func levelOrder(root *Node) [][]int {res : [][]int{}var help func(root *Node, depth int)help func(root *Node, depth int) {if root nil {return }if depth len(res) {res append(res, []int{})}res[depth] append(res[depth], root.Val)depthfor _, child : range root.Children {help(child, depth)}}help(root, 0)return res }(2)迭代创建新层追加数据。 func levelOrder(root *Node) [][]int {res : [][]int{}if root nil {return res}curQueue : []*Node{root}depth : 0for len(curQueue) 0 {nextQueue : []*Node{}res append(res, []int{})for _, node : range curQueue {res[depth] append(res[depth], node.Val)for _, child : range node.Children {nextQueue append(nextQueue, child)}}depthcurQueue nextQueue}return res }515.在每个树行中找最大值 (1)递归 func largestValues(root *TreeNode) []int {res : []int{}var help func(root *TreeNode, depth int) help func(root *TreeNode, depth int) {if root nil {return}if depth len(res) {res append(res, root.Val)}if root.Val res[depth] {res[depth] root.Val}depthhelp(root.Left, depth)help(root.Right,depth)return}help(root, 0)return res }(2)迭代 func largestValues(root *TreeNode) []int {res : []int{}if root nil {return res}depth : 0curQueue : []*TreeNode{root}for len(curQueue) 0 {nextQueue : []*TreeNode{}for _, node : range curQueue {if depth len(res) {res append(res, node.Val)}if node.Val res[depth] {res[depth] node.Val}if node.Left ! nil {nextQueue append(nextQueue, node.Left)}if node.Right ! nil {nextQueue append(nextQueue, node.Right)}}depthcurQueue nextQueue}return res }116.填充每个节点的下一个右侧节点指针 (1)递归如果当前节点高度等于len(res)证明该节点是最新一层最左侧节点将其追加到res中否则将res[depth]节点指向当前节点并更新res[depth]为当前节点 func connect(root *Node) *Node {res : []*Node{}var help func(root *Node, depth int) help func (root *Node, depth int) {if root nil {return}if depth len(res) {res append(res, root)} else {res[depth].Next rootres[depth] root}depthhelp(root.Left, depth)help(root.Right, depth)}help(root, 0)return root }(2)迭代 func connect(root *Node) *Node {if root nil {return root}curQueue : []*Node{root}for len(curQueue) 0 {nextQueue : []*Node{}size : len(curQueue)for i : 0; i size; i {node : curQueue[i]if node.Left ! nil {nextQueue append(nextQueue, node.Left)}if node.Right ! nil {nextQueue append(nextQueue, node.Right)}if i size - 1 {break}node.Next curQueue[i 1]}curQueue nextQueue}return root }117.填充每个节点的下一个右侧节点指针II 题解只能说与上题一模一样 总结 树递归层序迭代一个套路走完所有题 大佬递归方法太秀了必须码住
http://www.zqtcl.cn/news/65462/

相关文章:

  • 国际外贸网络交易平台黑帽seo论坛
  • 百度网站收录提交入口网站对于企业的好处
  • 18款免费软件app下载推荐长春seo推广外包
  • 网站导航栏图标贵阳网站制作 建设
  • wordpress搭建电影网站小程序api调用
  • 网站注册系统重庆网站建设技术托管
  • 北苑网站建设公司伍佰亿网站建设
  • 自己怎么做网址开网站石家庄网站建设价格低
  • 个人建站软件郑州网站建设找智巢
  • 深圳市建设交易网站WordPress 如何去域名授权
  • 做门户网站怎么赚钱运营推广网站建设
  • 做维修家具广告在哪个网站好柳州高端网站建设
  • 网站建设公司专业网站制作开发哪个网站做美食自媒体更好
  • 铜山区建设局局网站想给公司注册一个网站
  • 怎么仿一个复杂的网站普洱市网站建设
  • 手机网站开发是什么企业所得税优惠政策2021年
  • 建设银行长清网站免费解析网站
  • 包头做网站哪家好有没有做美食的视频网站
  • wordpress个人站重庆网站制作教程
  • 宁波建网站一站式服务13315全国征信系统
  • 做车贴网站黑帽seo工具
  • 手机编辑WordPress博客西安seo报价
  • 哪有做网站公司电子商务网站建设评价
  • 电子政务门户网站建设代码资深的环保行业网站开发
  • 博客网站主页代码html微信api文档
  • 网站营销工作流程硬件工程师需要学哪些
  • 刚做的网站上线后收不到了网站建设模块
  • 淘宝 网站建设深圳做企业网站多少钱
  • 如东网站制作安装了两个wordpress
  • 重庆网站建设公司那家好海东企业网站建设