Leetcode每日一题2020.11.11第222题:完全二叉树的节点个数

222.完全二叉树的节点个数

题目描述

在这里插入图片描述
在这里插入图片描述

知识点:

完全二叉树

在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第h层,则该层包含1~2^h个节点。

二分搜索

二分搜索法,是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

思路、算法及代码实现

方法一:最简单的解决办法就是用递归一个一个地计算节点。
在这里插入图片描述
方法二:二分搜索
方法一没有利用完全二叉树的特性。完全二叉树中,除了最后一层外,其余每层节点都是慢的,并且最后一层的
节点全部靠向左边。
这说明如果第k层不是最后一层,则在第k层中将有2^k个节点。由于最后一层可能没有完全填充,则节点数在1到
2的d次方个之间,其中d指的是树的高度。则树中除了最后一层以外,所有的节点个数为(2的d次方-1)。下面用二
分搜索法检查最后一层中第idx节点是否存在:
如,idx=4。idx位于0,1,2,3,4,5,6,7的后半部分,因此第一步是向右移动;然后idx位于4,5,6,7的前半部分,因此第二
步是向左移动;idx位于4,5的前半部分,因此下一步是向左移动。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_51210480/article/details/109736178
今日推荐