数据降到最后一级 · Shift to Last Level

将树形数据中每条路径的前面所有层级移除,仅保留最后一级索引
📂 LK → Tree 📄 ShiftPathstofirst.cs 🏗️ 路径简化 ⬇️ 单级降维

📖 功能概述

对树形数据执行特殊的降级操作——将每条路径的前面所有层级索引全部移除,仅保留最后一级索引作为新路径。 输入数据默认经过 Simplify 预处理。

与「数据降级」组件的区别:「数据降级」根据偏移值灵活控制保留前 N 级或后 N 级; 而「数据降到最后一级」固定保留全部路径中的最后一级索引,相当于「数据降级」中偏移值 O = -1 的固定版本。

🧠 核心算法:提取最后一级

对每条路径:
  计算原路径深度 N,目的深度 destination = N - 1(最后一级)

情况 1:路径深度 ≤ destination(即仅单级)
  新路径 = {P[0]} — 以第一个索引作为一级路径(兜底)

情况 2:路径深度 > destination(多级)
  新路径 = P[destination] = P[最后一级] — 仅保留最后一级索引

示例:
输入路径 {0;2;5}(N=3),destination = 2(最后一级索引=5)
  N > destination → 新路径 = P[2] = {5}

输入路径 {5}(N=1),destination = 0(最后一级索引=5)
  N ≤ destination → 兜底,新路径 = {P[0]} = {5}

📥 输入参数

名称类型必填说明
数据 (D) Generic 必需 需要降级的数据树。输入自动经过 Simplify 预处理。

📤 输出参数

名称类型说明
结果 (D) Generic 降到最后一级后的数据树。每条路径仅保留原路径的最后一级索引。

📋 使用示例

输入树(Simplify 后):
{0;0;0} → [A,B]
{0;0;1} → [C]
{0;0;2} → [D,E]
{0;1;0} → [F]
{0;2;0} → [G,H]

运算(保留最后一级):
  {0;0;0} → 最后一级 = 0 → {0} ← [A,B]
  {0;0;1} → 最后一级 = 1 → {1} ← [C]
  {0;0;2} → 最后一级 = 2 → {2} ← [D,E]
  {0;1;0} → 最后一级 = 0 → {0} ← [F](合并到已有分支)
  {0;2;0} → 最后一级 = 0 → {0} ← [G,H](合并到已有分支)

输出:
{0} → [A,B,F,G,H]
{1} → [C]
{2} → [D,E]

🎯 应用场景

⚠️ 注意事项:
  • 输入数据会自动进行 Simplify 预处理(折叠重叠路径)。
  • 降级后多条原路径的最后一级索引相同时,数据会合并到同一条分支。
  • 单级路径(如 {5})的降级结果保持不变(兜底策略)。
  • 该组件是「数据降级」组件 O = -1 的专用版,操作更简单直接,无需设置偏移值。

📋 组件信息

名称数据降到最后一级
英文名Shift to Last Level (Shift)
分类LK → Tree
基类GH_Component
GUID4678819B-791F-4621-8457-919E321F6FCC