题目链接
英文链接:https://leetcode.com/problems/count-complete-tree-nodes/
中文链接:https://leetcode-cn.com/problems/count-complete-tree-nodes/
题目详述
给出一个完全二叉树,求出该树的节点个数。
说明:
完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。
示例:
1 | 输入: |
题目详解
求一棵树的结点个数的通用代码如下(时间复杂度为 O(n)
):
1 | public class LeetCode_00222 { |
- 由于题目限定给定的数为完全二叉树,可能存在左子树为满二叉树的情况,这一部分可以直接根据深度计算出结点个数,不满足的地方仍旧需要遍历。
- 相当于二分查找最后一层最后一个结点的位置,查找的复杂度为
O(logn)
,最多查找O(logn)
次,所以时间复杂度为O(logn * logn)
。
1 | public class LeetCode_00222 { |