完全二叉树的数组表示
在计算机中,完全二叉树通常使用数组来表示,其中节点按照层序(从上到下、从左到右)依次存储。对于一个长度为 n 的数组:
根节点 位于索引 0。
对于任意节点位于索引 i:
左子节点 位于 2i + 1。
右子节点 位于 2i + 2。
叶子节点和非叶子节点的索引
在完全二叉树中,叶子节点和非叶子节点的划分可以通过以下方式确定:
叶子节点的起始索引:
叶子节点开始的位置通常在 (n / 2) 处(使用整数除法)。
这是因为在完全二叉树中,前 (n / 2) 个节点都是非叶子节点,每个非叶子节点至少有一个子节点。
最后一个非叶子节点的索引:
由于叶子节点从 (n / 2) 开始(包括n/2),最后一个非叶子节点的索引为 (n / 2) - 1,这个节点前面的节点也都是非叶子节点(包括(n / 2) - 1)。
示例分析
假设数组长度为 5:
数组索引:0, 1, 2, 3, 4
节点分布:
索引 0:根节点
索引 1 和 2:根节点的左右子节点
索引 3 和 4:索引 1 的子节点
根据上述规则:
计算叶子节点的起始索引:
5 / 2 = 2
所以,索引 2、3、4 是叶子节点。
确定最后一个非叶子节点的索引:
(5 / 2) - 1 = 1
索引 1 是最后一个非叶子节点,前面的索引0同样也是非叶子节点。