带有反向引用的克隆树数据结构?

苦蓝

我想克隆一棵对象树,其中每个节点还引用父节点:

在此处输入图片说明

如何避免多次克隆父母?每个节点都是一个Guy当我克隆没有父母的根家伙时,我会克隆它的孩子和孩子的孩子。不能再次克隆孩子的父母,因为我已经克隆了它。那我要用什么克隆技术呢?以及如何避免我的困境?

public class Guy
{
    private Guy parent = null;
    private List<Guy> children = new List<Guy>();
    private double x, y, z;
}

感谢您提供任何有用的建议!

(如果问题是重复的,并且您让我知道,我会删除它,没问题。)

编码器

据我了解,可以使用以下递归函数进行克隆。

public Guy Clone(Guy original, Guy parent = null)
{
    Guy originalClone = new Guy();
    originalClone.parent = parent;
    foreach (Guy child in original.children)
    {
        originalClone.children.Add(Clone(child,originalClone));
    }
    return originalClone;
}

以下调用返回树副本的根。

Guy RootOfCopy = Clone(RootOfOriginal);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章