222 Count Complete Tree Nodes
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相关推荐
- 【LeetCode】222. Count Complete Tree Nodes 解题报告(Python)
[LeetCode]222. Count Complete Tree Nodes 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个 ...
- 222. Count Complete Tree Nodes
题目: Given a complete binary tree, count the number of nodes. Definition of a complete binary tree fr ...
- Middle-题目95:222. Count Complete Tree Nodes
题目原文: Given a complete binary tree, count the number of nodes. 题目大意: 给出一个完全二叉树,求节点数. 题目分析: 如果直接递归数节点 ...
- leetcode 222 Count Complete Tree Nodes
今天做了一道leetcode题,刚开始是暴力破解,发现special judge, very large tree 过不去,然后一顿想,一顿查,发现可以运用complete binary tree 的 ...
- LeetCode 222. Count Complete Tree Nodes 题解——Java
题目链接:https://leetcode.com/problems/count-complete-tree-nodes/#/description 题目要求:计算完全二叉树的节点个数 思路:首先想到 ...
- leetcode 222. Count Complete Tree Nodes | 222. 完全二叉树的节点个数(Java)
题目 https://leetcode.com/problems/count-complete-tree-nodes/ 题解 思路参考左程云<程序员代码面试指南> 顺便贴一下草稿 代码 c ...
- Count Complete Tree Nodes
https://leetcode.com/problems/count-complete-tree-nodes/ 宽度优先搜索方法,超时!! /*** Definition for a binary ...
- LeetCode Count Complete Tree Nodes(二分法)
问题:给出一个完全二叉树,求其结点个数 思路:第一种方式时直接使用递归法,将其左子树个数加上右子树个数再加上根结点 第二种方式二分法,因为完全二叉树除了最后一层外,其它都满足有2^i个结点,而最后一层 ...
- LeetCode题解-222-Count Complete Tree Nodes
没有做出来,所以参考了https://segmentfault.com/a/1190000003818177 迭代法的图解如下:
最新文章
- RDKit | RDKit 中的RECAP进行分子裂解
- ASP.Net网站文件类型大全
- flink mysql connector_Flink JDBC Connector:Flink 与数据库集成最佳实践
- Perl 第一章概述
- jmeter jdbc mysql_jmeter获取JDBC响应做接口关联(三)
- codevs1700 施工方案第二季
- Neural Architecture Search(NAS)强化学习寻找最优网络、NASNet、MNASNet
- OI造数据以及Lemon评测教程
- 手动下载Windows Defender离线更新包
- 关于约束多目标MOEA/D-DAE
- html p 标签文字换行与不换行以及文字隐藏
- linux a卡怎么切换n卡,手把手教您win10系统a卡切换独显的具体办法
- TDengine与中泰证券正式签约,打造金融量化交易场景解决方案
- 手机上如何学会使用计算机,手机如何投屏到win7电脑上_手机投屏到win7电脑的详细方法...
- RPA应用场景-交通违章查询
- 2023注册会计电子版教材
- 前端解决web端 125%,150%缩放,1366*768分辨率兼容问题
- 现在学校应用较多的计算机学籍管理系统,计算机基础知识选择题500个
- 知乎高赞:有哪些高逼格的公众号值得推荐
- C++ STL编程学习(二)回到最初的起点
热门文章
- web python template injection_XCTF Web_python_template_injection
- golang实现RPC的几种方式
- 10大Go语言开源项目推荐
- Android已读未读功能,Android实现小圆点显示未读功能
- c++ arm 图像处理_方案解析丨如何在ARM平台搭建超声波无损探伤系统
- c语言八数码A星算法代码解析,八数码问题c语言a星算法详细实验报告含代码解析...
- Collection 属性ArrayList.add方法内部调用过程
- java.sql.SQLException: Access denied for user ‘root‘@‘hadoop001‘ (using password: YES)
- Maven的核心概念
- 折线图_Line plot - 折线图