Hello 算法 1.0.0b1 C++版updateHeight(node); updateHeight(child); // 返回旋转后子树的根结点 return child; } Case 2 ‑ 左旋 类似地,如果将取上述失衡二叉树的“镜像”,那么则需要「左旋」操作。 7. 树 hello‑algo.com 115 Figure 7‑27. 左旋操作 同理,若结点 child 本身有左子结点(记为 grandChild ),则需要在「左旋」中添加一步:将 ),则需要在「左旋」中添加一步:将 grandChild 作为 node 的右子结点。 Figure 7‑28. 有 grandChild 的左旋操作 观察发现,「左旋」和「右旋」操作是镜像对称的,两者对应解决的两种失衡情况也是对称的。根据对称性,我 们可以很方便地从「右旋」推导出「左旋」。具体地,只需将「右旋」代码中的把所有的 left 替换为 right 、 所有的 right 替换为 left ,单一使用左旋或右旋都无法使子树恢复平衡,此时需要「先左旋后右旋」,即先对 child 执行「左旋」,再对 node 执行「右旋」。 Figure 7‑29. 先左旋后右旋 Case 4 ‑ 先右后左 同理,取以上失衡二叉树的镜像,则需要「先右旋后左旋」,即先对 child 执行「右旋」,然后对 node 执行「左 旋」。 7. 树 hello‑algo.com 117 Figure 7‑30. 先右旋后左旋 旋转的选择0 码力 | 187 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 C++版updateHeight(node); updateHeight(child); // 返回旋转后子树的根结点 return child; } Case 2 ‑ 左旋 类似地,如果将取上述失衡二叉树的“镜像”,那么则需要「左旋」操作。 7. 树 hello‑algo.com 115 Figure 7‑27. 左旋操作 同理,若结点 child 本身有左子结点(记为 grandChild ),则需要在「左旋」中添加一步:将 ),则需要在「左旋」中添加一步:将 grandChild 作为 node 的右子结点。 Figure 7‑28. 有 grandChild 的左旋操作 观察发现,「左旋」和「右旋」操作是镜像对称的,两者对应解决的两种失衡情况也是对称的。根据对称性,我 们可以很方便地从「右旋」推导出「左旋」。具体地,只需将「右旋」代码中的把所有的 left 替换为 right 、 所有的 right 替换为 left ,单一使用左旋或右旋都无法使子树恢复平衡,此时需要「先左旋后右旋」,即先对 child 执行「左旋」,再对 node 执行「右旋」。 Figure 7‑29. 先左旋后右旋 Case 4 ‑ 先右后左 同理,取以上失衡二叉树的镜像,则需要「先右旋后左旋」,即先对 child 执行「右旋」,然后对 node 执行「左 旋」。 7. 树 hello‑algo.com 117 Figure 7‑30. 先右旋后左旋 旋转的选择0 码力 | 197 页 | 15.72 MB | 1 年前3
Hello 算法 1.0.0b4 C++版updateHeight(node); updateHeight(child); // 返回旋转后子树的根节点 return child; } 左旋 相应的,如果考虑上述失衡二叉树的“镜像”,则需要执行「左旋」操作。 7. 树 hello‑algo.com 141 Figure 7‑28. 左旋操作 同理,若节点 child 本身有左子节点(记为 grandChild ),则需要在「左旋」中添加一步:将 ),则需要在「左旋」中添加一步:将 grandChild 作 为 node 的右子节点。 Figure 7‑29. 有 grandChild 的左旋操作 可以观察到,右旋和左旋操作在逻辑上是镜像对称的,它们分别解决的两种失衡情况也是对称的。基于对称 性,我们可以轻松地从右旋的代码推导出左旋的代码。具体地,只需将「右旋」代码中的把所有的 left 替换 为 right ,将所有的 right 替换为 3,仅使用左旋或右旋都无法使子树恢复平衡。此时需要先左旋后右旋,即先对 child 执行「左旋」,再对 node 执行「右旋」。 Figure 7‑30. 先左旋后右旋 先右旋后左旋 同理,对于上述失衡二叉树的镜像情况,需要先右旋后左旋,即先对 child 执行「右旋」,然后对 node 执行 「左旋」。 7. 树 hello‑algo.com 143 Figure 7‑31. 先右旋后左旋 旋转的选择0 码力 | 343 页 | 27.39 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 09 CUDA C++ 流体仿真实战示意: 00 | ABCDE | 00 • cudaAddressModeWrap :重叠模式(循环) • 示意: DE | ABCDE | AB • cudaAddressModeMirror :镜像模式 • 示意: BA | ABCDE | ED CUDA 纹理对象:封装 • 其中 cudaTextureFilterMode 表示采样的坐标不是整数 时要如何在周围 8 个值之间插值,有以下几种选择:0 码力 | 58 页 | 14.90 MB | 1 年前3
Hello 算法 1.1.0 C++ 版updateHeight(node); updateHeight(child); // 返回旋转后子树的根节点 return child; } 2. 左旋 相应地,如果考虑上述失衡二叉树的“镜像”,则需要执行图 7‑28 所示的“左旋”操作。 第 7 章 树 hello‑algo.com 165 图 7‑28 左旋操作 同理,如图 7‑29 所示,当节点 child 有左子节点(记为 grand_child )时,需要在左旋中添加一步:将 grand_child 作为 node 的右子节点。 图 7‑29 有 grand_child 的左旋操作 可以观察到,右旋和左旋操作在逻辑上是镜像对称的,它们分别解决的两种失衡情况也是对称的。基于对称 性,我们只需将右旋的实现代码中的所有的 left 替换为 right ,将所有的 right 替换为 left ,即可得到左 旋的实现代码: ,仅使用左旋或右旋都无法使子树恢复平衡。此时需要先对 child 执行“左旋”, 再对 node 执行“右旋”。 图 7‑30 先左旋后右旋 4. 先右旋后左旋 如图 7‑31 所示,对于上述失衡二叉树的镜像情况,需要先对 child 执行“右旋”,再对 node 执行“左旋”。 图 7‑31 先右旋后左旋 第 7 章 树 hello‑algo.com 167 5. 旋转的选择 图 7‑32 展0 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0b5 C++版updateHeight(node); updateHeight(child); // 返回旋转后子树的根节点 return child; } 2. 左旋 相应的,如果考虑上述失衡二叉树的“镜像”,则需要执行图 7‑28 所示的“左旋”操作。 第 7 章 树 hello‑algo.com 161 图 7‑28 左旋操作 同理,如图 7‑29 所示,当节点 child 有左子节点(记为 grandChild )时,需要在左旋中添加一步:将 grandChild 作为 node 的右子节点。 图 7‑29 有 grandChild 的左旋操作 可以观察到,右旋和左旋操作在逻辑上是镜像对称的,它们分别解决的两种失衡情况也是对称的。基于对称 性,我们只需将右旋的实现代码中的所有的 left 替换为 right ,将所有的 right 替换为 left ,即可得到左 旋的实现代码。 ,仅使用左旋或右旋都无法使子树恢复平衡。此时需要先对 child 执行“左旋”, 再对 node 执行“右旋”。 图 7‑30 先左旋后右旋 4. 先右旋后左旋 如图 7‑31 所示,对于上述失衡二叉树的镜像情况,需要先对 child 执行“右旋”,然后对 node 执行“左旋”。 第 7 章 树 hello‑algo.com 163 图 7‑31 先右旋后左旋 5. 旋转的选择 图 7‑320 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.0.0 C++版updateHeight(node); updateHeight(child); // 返回旋转后子树的根节点 return child; } 2. 左旋 相应地,如果考虑上述失衡二叉树的“镜像”,则需要执行图 7‑28 所示的“左旋”操作。 第 7 章 树 hello‑algo.com 165 图 7‑28 左旋操作 同理,如图 7‑29 所示,当节点 child 有左子节点(记为 grand_child )时,需要在左旋中添加一步:将 grand_child 作为 node 的右子节点。 图 7‑29 有 grand_child 的左旋操作 可以观察到,右旋和左旋操作在逻辑上是镜像对称的,它们分别解决的两种失衡情况也是对称的。基于对称 性,我们只需将右旋的实现代码中的所有的 left 替换为 right ,将所有的 right 替换为 left ,即可得到左 旋的实现代码: ,仅使用左旋或右旋都无法使子树恢复平衡。此时需要先对 child 执行“左旋”, 再对 node 执行“右旋”。 图 7‑30 先左旋后右旋 4. 先右旋后左旋 如图 7‑31 所示,对于上述失衡二叉树的镜像情况,需要先对 child 执行“右旋”,再对 node 执行“左旋”。 图 7‑31 先右旋后左旋 第 7 章 树 hello‑algo.com 167 5. 旋转的选择 图 7‑32 展0 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C++ 版updateHeight(node); updateHeight(child); // 返回旋转后子树的根节点 return child; } 2. 左旋 相应地,如果考虑上述失衡二叉树的“镜像”,则需要执行图 7‑28 所示的“左旋”操作。 第 7 章 树 www.hello‑algo.com 165 图 7‑28 左旋操作 同理,如图 7‑29 所示,当节点 child 有左子节点(记为 grand_child )时,需要在左旋中添加一步:将 grand_child 作为 node 的右子节点。 图 7‑29 有 grand_child 的左旋操作 可以观察到,右旋和左旋操作在逻辑上是镜像对称的,它们分别解决的两种失衡情况也是对称的。基于对称 性,我们只需将右旋的实现代码中的所有的 left 替换为 right ,将所有的 right 替换为 left ,即可得到左 旋的实现代码: ,仅使用左旋或右旋都无法使子树恢复平衡。此时需要先对 child 执行“左旋”, 再对 node 执行“右旋”。 图 7‑30 先左旋后右旋 4. 先右旋后左旋 如图 7‑31 所示,对于上述失衡二叉树的镜像情况,需要先对 child 执行“右旋”,再对 node 执行“左旋”。 图 7‑31 先右旋后左旋 第 7 章 树 www.hello‑algo.com 167 5. 旋转的选择 图 7‑320 码力 | 379 页 | 18.48 MB | 10 月前3
共 8 条
- 1













