具有反向引用的克隆树数据结构?
Clone tree data structure with back references?
我想克隆 objects 的树,其中每个节点还引用 parent 节点:
如何避免一次多次克隆 parent? 每个节点都是一个 Guy
。当我克隆没有 parent 的根人时,我克隆了它的 children 和 children 的 children。 children 的 parent 不能复制第二次,因为我已经复制过了。那么我使用什么克隆技术呢?它如何避免我的困境?
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);
我想克隆 objects 的树,其中每个节点还引用 parent 节点:
如何避免一次多次克隆 parent? 每个节点都是一个 Guy
。当我克隆没有 parent 的根人时,我克隆了它的 children 和 children 的 children。 children 的 parent 不能复制第二次,因为我已经复制过了。那么我使用什么克隆技术呢?它如何避免我的困境?
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);