嚴華 发表于 2024-7-24 08:53:59

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

什么是计算机基础?如果本题能够用二分+二进制+二叉树的方式解出本题,那么我可以认为你的计算机基础就很好了。很久以来,我一直认为自己的计算机基础好,但是自刷题以来,跟网上这么多优秀的同砚相比,我发现我着实是弱爆了。以是请认认真真地提升自己的专业能力吧!
1. 题目https://i-blog.csdnimg.cn/direct/67d1a286a27648b886ee97b6fbc86c5f.png

这是一道好题!
2. 分析

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

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

第二种方法则稍显进阶了。在我为我的秒杀此题而沾沾自喜时,发现竟然另有只需要O(logn * logn)复杂度的算法。
我们都知道 一个正数可以由一棵二叉树可以完整表示, 比如:数字6的二进制位就是110。
https://i-blog.csdnimg.cn/direct/5807b30f19f54a48a6ceb35de50b9300.png
3. 代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【LeetCode】222. 完全二叉树的个数