You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中实现N叉树的深拷贝?

Kotlin实现N叉树的深拷贝

如果需要创建N叉树的深拷贝(即树中每个节点都被完整复制,新树与原树无任何引用关联),可以使用下面的递归算法实现。我在Stack Overflow上没找到专门针对Kotlin的N叉树深拷贝实现内容,现有相关资料要么零散要么缺失,所以把这段代码分享出来,供有需要的开发者参考。

N叉树节点定义示例

class TreeNode<T>(val value: T) {
    val children: MutableList<TreeNode<T>> = mutableListOf()
}

深拷贝核心实现代码

fun <T> TreeNode<T>.deepCopy(): TreeNode<T> {
    // 创建当前节点的副本
    val copiedNode = TreeNode(this.value)
    // 递归复制所有子节点并添加到副本的子节点列表中
    this.children.forEach { child ->
        copiedNode.children.add(child.deepCopy())
    }
    return copiedNode
}

实现说明

  • 该方法通过递归遍历原树的每个节点,为每个节点创建独立的新实例,确保新树的所有节点都与原树无引用共享,完全独立。
  • 泛型<T>保证该实现适用于任意类型的节点值:如果T是Kotlin数据类,默认的拷贝逻辑即可满足需求;若为自定义复杂对象,则需要额外实现该对象自身的深拷贝逻辑。

内容的提问来源于stack exchange,提问作者Tim Korelov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:15:38