📜  二叉堆数据结构中的叶子起点

📅  最后修改于: 2021-10-28 02:11:57             🧑  作者: Mango

二叉堆是一棵完整的树(所有级别都被完全填充,可能除了最后一层之外,最后一层的所有键都尽可能左)。换句话说,我们可以说它是一个几乎完整的二叉树。

二元堆通常表示为数组。如果我们仔细观察,我们可以注意到,在节点数为 n 的堆中,叶子从一个特定的索引开始,然后跟随它,所有节点都是叶子,直到索引 n。

让我们看一个例子来观察这一点:

10 
         /      \               
       20        100          
      /                      
    30                     

让我们以数组 Arr 的形式表示它,其索引从 1 开始:
我们有:
到达[1] = 10
到达[2] = 20
到达[3] = 100
到达[4] = 30
如果我们观察,第一个叶子(即 100)从索引 3 开始。在它之后 Arr[4] 也是一个叶子。

通过仔细分析,观察到以下结论:

结论:在具有 n 个元素的堆中,从索引 [(floor(n/2)+1) 到 n] 的元素是叶子。

如果索引从 0 而不是 1 开始,叶子的起始索引是什么?
上面的解释假设索引从 1 开始,但在大多数编程语言中,索引从 0 开始。

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程。