点击上方蓝字设为星标
如果让你数一下一棵普通二叉树有多少个节点,这很简单,只要在二叉树的遍历框架上加一点代码就行了。
但是,如果给你一棵完全二叉树,让你计算它的节点个数,你会不会?算法的时间复杂度是多少?
这个算法的时间复杂度应该是 O(logN*logN),如果你心中的算法没有达到这么高效,那么本文就是给你写的。
首先要明确一下两个关于二叉树的名词「完全二叉树」和「满二叉树」。
我们说的完全二叉树如下图,每一层都是紧凑靠左排列的:
![699f2b21882ca34646b2bff76fe05a4f.png](https://i-blog.csdnimg.cn/blog_migrate/3eb11b44f2932d512192c0a3e6e214e4.png)
我们说的满二叉树如下图,是一种特殊的完全二叉树,每层都是是满的&