博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
222 Count Complete Tree Nodes
阅读量:5134 次
发布时间:2019-06-13

本文共 792 字,大约阅读时间需要 2 分钟。

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 0        leftDepth = 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 0        return 1 + self.getDepth(root.left)

 

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

你可能感兴趣的文章
MyBaits动态sql语句
查看>>
用户空间与内核空间,进程上下文与中断上下文[总结]
查看>>
JAVA开发环境搭建
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
SDN第四次作业
查看>>
django迁移数据库错误
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
字符串处理
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
距离公式汇总以及Python实现
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
PyQt5--EventSender
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>