【问题标题】:Name of the method that removes a tree node but keeps its children删除树节点但保留其子节点的方法的名称
【发布时间】:2023-03-22 14:15:01
【问题描述】:

我正在开发一个处理树结构和场景图的开源JS library。由于它是针对一般用途的,API 方法的名称应遵循约定。但是,我找不到树操作的术语,即从其父节点中删除一个节点,以便将已删除节点的子节点插入到父节点中以替换已删除节点的位置。

为了说明,方法X应用于树中的节点B

A
|
+-B
| |
| +-C
| |
| +-D
|   |
|   +-E
|
+-F

运算结果:

A
|
+-C
|
+-D
| |
| +-E
|
+-F

这种操作/方法 X 的名称是什么?我记得几年前我看到它有一个特定的名字。拼接?减少?简化?展平?

【问题讨论】:

    标签: javascript data-structures tree terminology scenegraph


    【解决方案1】:

    我建议使用unwrap(),因为jQuery 已经在使用它,并且很好地描述了操作正在做什么(至少在我看来它更容易理解)。无论如何,这类问题肯定主要是基于意见的,所以我的回答应该被视为纯粹的建议:)。

    【讨论】:

    • 这很接近,+1!但是,unwrap 接收多个兄弟节点而不是删除的一个,并且名称 unwrap 对此很有用。有问题的操作可以由unwrap(B.getChildren) 实现。操作应该是被移除节点的方法。
    【解决方案2】:

    终于在我看到的地方找到了。一个 ZUI lib Jazz for Java 为其ZGroup 节点提供了一个方法extract()

    public void extract():从树中提取这个节点,合并它上面和下面的节点。如果该节点有父节点,则该节点的子节点将添加到该节点所在位置的该父节点的子节点中。如果该节点没有父节点,则其子节点将被删除。请注意,此方法会延迟触发任何必要的组事件,直到树完全更新为止。

    不过,Jazz 的继承者 ZUI lib Piccolo 似乎放弃了该方法。至少我在Piccolo API docs 中找不到类似的东西。也许该方法是不必要的?

    【讨论】:

      猜你喜欢
      • 2021-06-11
      • 2020-08-30
      • 1970-01-01
      • 2021-11-15
      • 2023-03-11
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多