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

国家住房和城乡建设部网站查询最大的网站建设公司

国家住房和城乡建设部网站查询,最大的网站建设公司,郑州无痛人流费用,网上有专业的做网站吗二叉树我最近刷的特别多,差不多快刷完了,但是有一种题型差点给我忽略了,那就是完全二叉树,这也是一个很重要的题型,今天刚好有一道题目可以来复习一下完全二叉树的特性 题目链接如下:https://leetcode.cn/…
  • 二叉树我最近刷的特别多,差不多快刷完了,但是有一种题型差点给我忽略了,那就是完全二叉树,这也是一个很重要的题型,今天刚好有一道题目可以来复习一下完全二叉树的特性

  • 题目链接如下:https://leetcode.cn/problems/count-complete-tree-nodes/?envType=study-plan-v2&envId=top-interview-150
    在这里插入图片描述

  • 做这道题首先有一点要知道的,就是完全二叉树是怎么样子的,下面说一下完全二叉树的概念

  • 完全二叉树:只有最底层的节点未被填满,且最底层节点尽量靠左填充
    在这里插入图片描述

  • ok 现在已经了解了基础概念了,我们再来看这道题目

  • 这道题目的目的是让我们遍历这棵树,并算有几个节点

  • 说实话,这道题很简单,用暴力的做法,就是遍历一整棵树,代码如下:

  • 递归法:

//方法一:递归
func Solution222(root *TreeNode) int {if root == nil {return 0}left := Solution222(root.Left)right := Solution222(root.Right)return left + right + 1
}
  • 迭代法:
//方法二:迭代
func Solution222v2(root *TreeNode) int {if root == nil{return 0}queue := []*TreeNode{root}count := 0for len(queue) > 0{node := queue[0]queue = queue[1:]count++if node.Left != nil{queue = append(queue, node.Left)}if node.Right != nil{queue = append(queue, node.Right)}}return count
}
  • 这两个方法是遍历树的最基本的方法之一

  • 但是 这不是这道题的本意,这道题目是想要我们理由完全二叉树这个特性解题

  • 那我们需要好好思考一下,完全二叉树有什么特点

    • 除了最后的叶子节点,其他层级节点都是满的

    • 当 左子树的深度 和 右子树的深度 一致的时候,说明 左子树是满的二叉树 可以通过 2的h次方求的左子树的节点个数在这里插入图片描述

    • 当 右子树的深度 不如 左子树的深度 的时候,说明 左子树不是一个满的二叉树,但是右子树单独看是一个满的二叉树,所以可以通过 2的h次方求右子树的节点个数在这里插入图片描述

  • ok,知道这些特点,我们是不是可以利用一个逻辑来减少遍历

    • 当 左子树深度 等于 右子树的时候,就可以通过深度来计算左子树的节点,然后只遍历右子树
    • 当 左子树深度 等于 右子树的时候,就可以通过深度来计算右子树的节点,然后只遍历左子树
  • 这样我们本来需要遍历全部二叉树节点的,现在只需要遍历一半,思路瞬间打开,代码如下:

//方法三:二分查找
func Solution222v3(root *TreeNode) int {if root == nil{return 0}//检索左子树深度left := root.Leftldepth := 0for left != nil{left = left.Leftldepth++}//检索右子树深度right := root.Rightrdepth := 0for right != nil{right = right.Leftrdepth++}//左右子树深度判断if ldepth == rdepth{return (1<<ldepth) + Solution222v3(root.Right)}else{return (1<<rdepth) + Solution222v3(root.Left)}
}


ok,这里这道题目就结束了,感谢大家观看

http://www.yayakq.cn/news/744735/

相关文章:

  • 建店前期网站开通怎么做分录互联网系统
  • 模板网站的域名是什么意思ui设计师个人网站建设
  • 西安营销型网站建设动力无限淘宝客优惠券网站建设教程视频
  • 乌克兰网站服务器做网站用什么语言
  • 网站开发难吗展示网站方案
  • 网站开发具体步骤重庆制作网站软件
  • 良品铺子网站建设用织梦做网站费用
  • 广州 电商网站建设网站建设怎么建设
  • 张家口桥西区建设局网站wordpress网站维护插件
  • 电商网站的功能有哪些高端品牌网站建设兴田德润实惠
  • 做多站发布信息的网站东软网站建设
  • 建设公司网站都需要什么科目网站开发 微盘
  • asp外贸网站建设招聘网站开发要学习什么
  • 对网站开发与管理的分析做网站收费标
  • 国内产品网站自己做app
  • 怎样建设公司网站小程序wordpress文章图片自适应
  • 泛华建设集团网站标书制作图片
  • 泰安网站优化什么是网络营销的基础
  • 广州网络推广建站杭州富阳建设局网站
  • 专业网站设计方案公司泰安钢管网站建设
  • 免费网站推广工具有哪些北京旅游网站排名
  • 网站建设攵金手指科杰壹陆临沂建设工程信息网
  • 营销型网站单页wordpress联系方式代码
  • 网站空间年费昆山网站建设义搏
  • 网站备案怎么才能快速哪个网站企业邮箱最好
  • 如何在凡科建设网站网站建设市区
  • 广州网站设计十年乐云seo福州网站建设多少钱
  • 做网站的app有什么作用青少年编程培训机构排名前十
  • 广州定制网站设台山住房和城乡建设 网站
  • 大连p2p网站建设怎么给网站做防护