【LeetCode】222. 完全二叉树的个数

什么是计算机基础?如果本题能够用二分+二进制+二叉树的方式解出本题,那么我可以认为你的计算机基础就很好了。很久以来,我一直认为自己的计算机基础好,但是自刷题以来,跟网上这么多优秀的同学相比,我发现我实在是弱爆了。所以请认认真真地提升自己的专业能力吧!

1. 题目在这里插入图片描述

这是一道好题!

2. 分析

这道题有很多种写法。先说简单的,用递归的方式求解一棵二叉树有多少节点。

2.1 递归求解

使用递归的方法找出当前节点的左子树节点个数,右子树节点个数,那么以当前节点为根的节点个数就求出来了。很显然,这是一个可以使用递归求解的题。复杂度为O(n)

2.2 二分法+树特性+位运算

第二种方法则稍显进阶了。在我为我的秒杀此题而沾沾自喜时,发现竟然还有只需要O(logn * logn)复杂度的算法。

我们都知道 一个正数可以由一棵二叉树可以完整表示, 比如:数字6的二进制位就是110。
在这里插入图片描述

3. 代码


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

说文科技

看书人不妨赏个酒钱?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值