当前位置:网站首页>模拟卷Leetcode【普通】222. 完全二叉树的节点个数
模拟卷Leetcode【普通】222. 完全二叉树的节点个数
2022-07-29 05:39:00 【邂逅模拟卷】
汇总:模拟卷Leetcode 题解汇总
222. 完全二叉树的节点个数
给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。
完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。
示例 1:
输入:root = [1,2,3,4,5,6]
输出:6
示例 2:
输入:root = []
输出:0
示例 3:
输入:root = [1]
输出:1
提示:
树中节点的数目范围是[0, 5 * 104]
0 <= Node.val <= 5 * 104
题目数据保证输入的树是 完全二叉树
进阶:遍历树来统计节点是一种时间复杂度为 O(n) 的简单解决方案。你可以设计一个更快的算法吗?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-complete-tree-nodes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码:
from leetcode_python.utils import *
def Tree2List(root):
"""二叉树 -> 列表"""
if not root:return []
res = []
last = [root]
while last:
now = []
for node in last:
if node:
res.append(node.val)
now.append(node.left)
now.append(node.right)
else:
res.append(None)
last = now
while len(res)>1 and res[-1]==None: res.pop(-1)
return res
class Solution:
def countNodes(self, root: TreeNode) -> int:
return len(Tree2List(root))
def test(data_test):
s = Solution()
data = data_test # normal
# data = [List2Node(data_test[0])] # list转node
return s.getResult(*data)
def test_obj(data_test):
result = [None]
obj = Solution(*data_test[1][0])
for fun,data in zip(data_test[0][1::],data_test[1][1::]):
if data:
res = obj.__getattribute__(fun)(*data)
else:
res = obj.__getattribute__(fun)()
result.append(res)
return result
if __name__ == '__main__':
datas = [
[],
]
for data_test in datas:
t0 = time.time()
print('-'*50)
print('input:', data_test)
print('output:', test(data_test))
print(f'use time:{
time.time() - t0}s')
备注:
GitHub:https://github.com/monijuan/leetcode_python
CSDN汇总:模拟卷Leetcode 题解汇总
可以加QQ群交流:1092754609
leetcode_python.utils详见汇总页说明
先刷的题,之后用脚本生成的blog,如果有错请留言,我看到了会修改的!谢谢!
边栏推荐
- The difference between pairs and ipairs
- 【冷冻电镜】RELION4.0 pipeline命令总结(自用)
- 吴恩达老师机器学习课程笔记 00 写在前面
- Callable 的使用
- Teacher wangshuyao's operations research course notes 07 linear programming and simplex method (standard form, base, base solution, base feasible solution, feasible base)
- 吴恩达老师机器学习课程笔记 05 Octave教程
- Case supplement, ATM
- leetcode-1331:数组序号转换
- 王树尧老师运筹学课程笔记 03 KKT定理
- Difference between CNAME record and a record
猜你喜欢

损失函数——交叉熵损失函数

吴恩达老师机器学习课程笔记 02 单变量线性回归

LDAP brief description and unified authentication description

【论文阅读 | cryoET】Gum-Net:快速准确的3D Subtomo图像对齐和平均的无监督几何匹配

【CryoEM】FSC, Fourier Shell Correlation简介

MySQL 事物四种隔离级别分析

Jetpack Compose 中的键盘处理

IO流 - File - properties

ECCV 2022丨轻量级模型架ParC-Net 力压苹果MobileViT代码和论文下载

Condition 条件对象源码浅读
随机推荐
SDN topology discovery principle
【冷冻电镜入门】加州理工公开课课程笔记 Part 3: Image Formation
C language memory stack and heap usage
Teacher Wu Enda's machine learning course notes 00 are written in the front
Embedding understanding + code
AbstractQueuedSynchronizer(AQS)之 ReentrantLock 源码浅读
【CryoEM】FSC, Fourier Shell Correlation简介
王树尧老师运筹学课程笔记 08 线性规划与单纯形法(单纯形法)
王树尧老师运筹学课程笔记 10 线性规划与单纯形法(关于检测数与退化的讨论)
ping 原理
关于SQL Server语句入门级应用阶段性学习——找工作必备(一)
【冷冻电镜】RELION4.0 pipeline命令总结(自用)
Why does 5g N2 interface control plane use SCTP protocol?
基于Matlab解决线性规划问题
王树尧老师运筹学课程笔记 07 线性规划与单纯形法(标准型、基、基解、基可行解、可行基)
数仓建模,什么是宽表?如何设计?好处与不足
MySQL 事物四种隔离级别分析
DBAsql面试题
说一下 TCP/IP 协议?以及每层的作用?
CNN convolutional neural network