三叉树和最大堆 - 它在视觉上是如何工作的?
Ternary tree and max heap - How does it work visually?
我有一组数字要插入:(从左到右)
61, 49, 90, 76, 46, 1, 82, 44, 62 ,79
任何人都可以用树展示它的视觉效果吗,我在将 82 插入堆后无法理解。
61
61 49
90 49 61
90 49 61 76
90 49 61 76 46
90 49 61 76 46 1
90 82 61 76 46 1 49
90 82 61 76 46 1 49 44
90 82 62 76 46 1 49 44 61
90 82 79 76 46 1 49 44 61 62
在三元堆中,每个节点最多有三个子节点。堆在数组中以广度优先顺序表示,根节点为 0,节点 x 的子节点位于 (x*3)+1
、(x*3)+2
和 (x*3)+3
位置。位置 x 处的节点位于 (x-1)/3
.
因此,您的数组 [90,82,79,76,46,1,49,44,61,62]
在以简单方式显示时看起来像这样。
92
|- 82
|- 46
|- 1
|- 49
|- 79
|- 44
|- 61
|- 62
|--76
或者,更传统地说:
92
/ | \
82 79 76
/ | \ / | \
46 1 49 44 61 62
您可能会发现我对 d-ary heap 的讨论很有用。
我有一组数字要插入:(从左到右)
61, 49, 90, 76, 46, 1, 82, 44, 62 ,79
任何人都可以用树展示它的视觉效果吗,我在将 82 插入堆后无法理解。
61
61 49
90 49 61
90 49 61 76
90 49 61 76 46
90 49 61 76 46 1
90 82 61 76 46 1 49
90 82 61 76 46 1 49 44
90 82 62 76 46 1 49 44 61
90 82 79 76 46 1 49 44 61 62
在三元堆中,每个节点最多有三个子节点。堆在数组中以广度优先顺序表示,根节点为 0,节点 x 的子节点位于 (x*3)+1
、(x*3)+2
和 (x*3)+3
位置。位置 x 处的节点位于 (x-1)/3
.
因此,您的数组 [90,82,79,76,46,1,49,44,61,62]
在以简单方式显示时看起来像这样。
92
|- 82
|- 46
|- 1
|- 49
|- 79
|- 44
|- 61
|- 62
|--76
或者,更传统地说:
92
/ | \
82 79 76
/ | \ / | \
46 1 49 44 61 62
您可能会发现我对 d-ary heap 的讨论很有用。