二叉堆是一棵完整的树(所有级别都被完全填充,可能除了最后一层之外,最后一层的所有键都尽可能左)。换句话说,我们可以说它是一个几乎完整的二叉树。
二元堆通常表示为数组。如果我们仔细观察,我们可以注意到,在节点数为 n 的堆中,叶子从一个特定的索引开始,然后跟随它,所有节点都是叶子,直到索引 n。
让我们看一个例子来观察这一点:
10
/ \
20 100
/
30
让我们以数组 Arr 的形式表示它,其索引从 1 开始:
我们有:
到达[1] = 10
到达[2] = 20
到达[3] = 100
到达[4] = 30
如果我们观察,第一个叶子(即 100)从索引 3 开始。在它之后 Arr[4] 也是一个叶子。
通过仔细分析,观察到以下结论:
The first leaf in a Heap starts from [floor(n/2)]+1 and all the nodes following it till
n are leaves.
结论:在具有 n 个元素的堆中,从索引 [(floor(n/2)+1) 到 n] 的元素是叶子。
如果索引从 0 而不是 1 开始,叶子的起始索引是什么?
上面的解释假设索引从 1 开始,但在大多数编程语言中,索引从 0 开始。
If we consider 0 as starting index, then leaves starts from floor(n/2) and exist till end, i.e., (n-1).
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。