diff --git a/ch6-web/ch6-02-router.md b/ch6-web/ch6-02-router.md index 8fb5198..2bf5e05 100644 --- a/ch6-web/ch6-02-router.md +++ b/ch6-web/ch6-02-router.md @@ -180,9 +180,18 @@ indices: 子节点索引,当子节点为非参数类型,即本节点的 wild 由于 `:id` 这个节点只有一个字符串的普通子节点,所以 indices 还依然不需要处理。 -上面这种情况比较简单,新的路由可以直接作为原路由的子节点进行插入。实际情况不会这么美好,接下来我们插入 `GET /search`,这时会导致树的边分裂。 +上面这种情况比较简单,新的路由可以直接作为原路由的子节点进行插入。实际情况不会这么美好。 ### 边分裂 +接下来我们插入 `GET /search`,这时会导致树的边分裂。 + +![get radix step 3](../images/ch6-02-radix-get-3.png) + +原有路径和新的路径在初始的 `/` 位置发生分裂,这样需要把原有的 root 节点内容下移,再将新路由 `search` 同样作为子节点挂在 root 节点之下。这时候因为子节点出现多个,root 节点的 indices 提供子节点索引,这时候该字段就需要派上用场了。"ms" 代表子节点的首字母分别为 m(marketplace) 和 s(search)。 + +我们一口作气,把 `GET /status` 和 `GET /support` 也插入到树中。这时候会导致在 `search` 节点上再次发生分裂,来看看最终的结果: + +![get radix step 4](../images/ch6-02-radix-get-4.png) ### 子节点冲突处理 diff --git a/images/ch6-02-radix-get-3.png b/images/ch6-02-radix-get-3.png new file mode 100644 index 0000000..c9d59e0 Binary files /dev/null and b/images/ch6-02-radix-get-3.png differ diff --git a/images/ch6-02-radix-get-4.png b/images/ch6-02-radix-get-4.png new file mode 100644 index 0000000..626636e Binary files /dev/null and b/images/ch6-02-radix-get-4.png differ