计算最小子节点位置
(&self, c: usize)
| 143 | |
| 144 | // 计算最小子节点位置 |
| 145 | fn min_child(&self, c: usize) -> usize { |
| 146 | // 同时计算左右子节点位置 |
| 147 | let (lc, rc) = (left_child!(c), right_child!(c)); |
| 148 | |
| 149 | // 1.如果右子节点位置超过 size,表示只有左子节点 |
| 150 | // 则左子节点就是最小子节点 |
| 151 | // 2.否则,同时存在左右子节点,需具体判断左右子 |
| 152 | // 节点数据大小,然后返回最小的子节点位置 |
| 153 | if rc > self.size { |
| 154 | lc |
| 155 | } else if self.data[lc] < self.data[rc] { |
| 156 | lc |
| 157 | } else { |
| 158 | rc |
| 159 | } |
| 160 | } |
| 161 | } |
| 162 | |
| 163 | fn main() { |