删除树节点但保留其子节点的方法的名称

Posted

技术标签:

【中文标题】删除树节点但保留其子节点的方法的名称【英文标题】:Name of the method that removes a tree node but keeps its children 【发布时间】:2018-08-18 22:01:26 【问题描述】:

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

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

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

运算结果:

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

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

【问题讨论】:

【参考方案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 中找不到类似的东西。也许该方法是不必要的?

【讨论】:

以上是关于删除树节点但保留其子节点的方法的名称的主要内容,如果未能解决你的问题,请参考以下文章

二叉树怎么删除节点?

关于平衡线段树的一点研究

题解 P2016 战略游戏

具有递归 CTE 的 Postgres:在保留树结构的同时按受欢迎程度对子节点进行排序/排序(父节点始终高于子节点)

Vue 在开发中使用Element框架中的tree组件,配置菜单权限在左侧导航菜单显示,点击子节点菜单时无法获取父节点的id,只有其子节点的和上级菜单的id数组

Vue 在开发中使用Element框架中的tree组件,配置菜单权限在左侧导航菜单显示,点击子节点菜单时无法获取父节点的id,只有其子节点的和上级菜单的id数组