如何在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
相关产品推荐
相关产品推荐

