1,这道题如果纯用递归数点而不利用其为一个complete binary tree的话会超时。

2.为了利用这个条件,比较左右两子数的高度:1, 如果相等则左子树为完全二叉树 2, 如果不等, 则右子树为完全二叉树。

3,完全二叉树的node个数为pow(2,depth)-1, 因此可以不用递归数点节约时间。

4,因为是complete binary tree,子树的深度只用一直找寻左儿子即可得到深度

总体复杂度O(lgn * lgn)

class Solution:# @param {TreeNode} root# @return {integer}def countNodes(self, root):if not root:return 0leftDepth = self.getDepth(root.left)rightDepth = self.getDepth(root.right)if leftDepth == rightDepth:return pow(2, leftDepth) + self.countNodes(root.right)else:return pow(2, rightDepth) + self.countNodes(root.left)def getDepth(self, root):if not root:return 0return 1 + self.getDepth(root.left)

转载于:https://www.cnblogs.com/dapanshe/p/4625853.html

222 Count Complete Tree Nodes相关推荐

  1. 【LeetCode】222. Count Complete Tree Nodes 解题报告(Python)

    [LeetCode]222. Count Complete Tree Nodes 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个 ...

  2. 222. Count Complete Tree Nodes

    题目: Given a complete binary tree, count the number of nodes. Definition of a complete binary tree fr ...

  3. Middle-题目95:222. Count Complete Tree Nodes

    题目原文: Given a complete binary tree, count the number of nodes. 题目大意: 给出一个完全二叉树,求节点数. 题目分析: 如果直接递归数节点 ...

  4. leetcode 222 Count Complete Tree Nodes

    今天做了一道leetcode题,刚开始是暴力破解,发现special judge, very large tree 过不去,然后一顿想,一顿查,发现可以运用complete binary tree 的 ...

  5. LeetCode 222. Count Complete Tree Nodes 题解——Java

    题目链接:https://leetcode.com/problems/count-complete-tree-nodes/#/description 题目要求:计算完全二叉树的节点个数 思路:首先想到 ...

  6. leetcode 222. Count Complete Tree Nodes | 222. 完全二叉树的节点个数(Java)

    题目 https://leetcode.com/problems/count-complete-tree-nodes/ 题解 思路参考左程云<程序员代码面试指南> 顺便贴一下草稿 代码 c ...

  7. Count Complete Tree Nodes

    https://leetcode.com/problems/count-complete-tree-nodes/ 宽度优先搜索方法,超时!! /*** Definition for a binary ...

  8. LeetCode Count Complete Tree Nodes(二分法)

    问题:给出一个完全二叉树,求其结点个数 思路:第一种方式时直接使用递归法,将其左子树个数加上右子树个数再加上根结点 第二种方式二分法,因为完全二叉树除了最后一层外,其它都满足有2^i个结点,而最后一层 ...

  9. LeetCode题解-222-Count Complete Tree Nodes

    没有做出来,所以参考了https://segmentfault.com/a/1190000003818177 迭代法的图解如下:

最新文章

  1. RDKit | RDKit 中的RECAP进行分子裂解
  2. ASP.Net网站文件类型大全
  3. flink mysql connector_Flink JDBC Connector:Flink 与数据库集成最佳实践
  4. Perl 第一章概述
  5. jmeter jdbc mysql_jmeter获取JDBC响应做接口关联(三)
  6. codevs1700 施工方案第二季
  7. Neural Architecture Search(NAS)强化学习寻找最优网络、NASNet、MNASNet
  8. OI造数据以及Lemon评测教程
  9. 手动下载Windows Defender离线更新包
  10. 关于约束多目标MOEA/D-DAE
  11. html p 标签文字换行与不换行以及文字隐藏
  12. linux a卡怎么切换n卡,手把手教您win10系统a卡切换独显的具体办法
  13. TDengine与中泰证券正式签约,打造金融量化交易场景解决方案
  14. 手机上如何学会使用计算机,手机如何投屏到win7电脑上_手机投屏到win7电脑的详细方法...
  15. RPA应用场景-交通违章查询
  16. 2023注册会计电子版教材
  17. 前端解决web端 125%,150%缩放,1366*768分辨率兼容问题
  18. 现在学校应用较多的计算机学籍管理系统,计算机基础知识选择题500个
  19. 知乎高赞:有哪些高逼格的公众号值得推荐
  20. C++ STL编程学习(二)回到最初的起点

热门文章

  1. web python template injection_XCTF Web_python_template_injection
  2. golang实现RPC的几种方式
  3. 10大Go语言开源项目推荐
  4. Android已读未读功能,Android实现小圆点显示未读功能
  5. c++ arm 图像处理_方案解析丨如何在ARM平台搭建超声波无损探伤系统
  6. c语言八数码A星算法代码解析,八数码问题c语言a星算法详细实验报告含代码解析...
  7. Collection 属性ArrayList.add方法内部调用过程
  8. java.sql.SQLException: Access denied for user ‘root‘@‘hadoop001‘ (using password: YES)
  9. Maven的核心概念
  10. 折线图_Line plot - 折线图