删除分支 · Delete Tree Branch

按索引删除树形结构的指定分支,输入多个索引同时删除多条分支
📂 LK → Tree 📄 DelTreeBranch.cs ✂️ 分支管理 🔢 批量删除

📖 功能概述

输入一个树形数据结构和待删除的分支索引列表,组件首先深拷贝原数据树(不修改源数据), 然后遍历索引列表,依次删除对应路径的分支。支持同时删除多条分支,索引超出范围时给出警告提示。

索引规则:分支索引按照树形数据 {0;0}, {0;1}, {1;0}, ... 的自然排列顺序编号, 从 0 开始计数。与 提取分支(GetTreeBranch)使用同一套编号体系。

🧠 核心逻辑三步法

Step 1 — 深拷贝:调用 gooTree.Duplicate() 创建原始数据树的完全副本,避免破坏输入数据。
Step 2 — 遍历删除:遍历索引列表,对每一个索引:
  ├─ 在 0 ~ pathCount-1 范围内?→ 调用 RemovePath(paths[index]) 删除该分支
  └─ 超出范围?→ 发送运行时警告,跳过该索引
Step 3 — 输出:将修改后的数据树副本设为输出。

📥 输入参数

名称类型必填说明
Tree (T) Generic 必需 源数据树,需要从中删除分支。支持任意 GH_Goo 类型。
Index (i) Integer 必需 需要删除的分支索引列表,默认值为 {0}。索引基于树形数据自然排列顺序(0-based)。

📤 输出参数

名称类型说明
List (L) Generic 删除指定分支后的数据树(树形结构)。如果删除了所有分支,输出为空树。

📋 使用示例

输入树:
{0;0} → [A, B, C]
{0;1} → [D, E]
{0;2} → [F, G, H]
{1;0} → [I, J]

输入索引:i = {0, 2}
运算:删除路径 {0;0} 和 {0;2} 的分支
输出树:
{0;1} → [D, E]
{1;0} → [I, J]
⚠️ 注意事项:
  • 索引基于删除前原始数据树的分支排列顺序,索引值在删除过程中不会因为中间删除而重算。
  • 索引超出 0 ~ (pathCount - 1) 范围时,仅给出警告提示,不会中断程序执行。
  • 组件通过 Duplicate() 深拷贝操作,不会修改原始输入数据树。
  • 如需「提取分支」而不是「删除分支」,请使用提取分支(GetTreeBranch)组件。

📋 组件信息

名称删除分支
英文名Delete Tree Branch (GT)
分类LK → Tree
基类GH_Component
GUIDC4C4FE42-318F-40C8-80AB-A60BB1CB9C81