using System.Collections.Generic;
namespace TreeCopy
{
public class TreeNode
{
public List<TreeNode> nodes;
public double[] _sampleData;
public TreeNode(double[] sampleData)
{
_sampleData = sampleData;
}
public TreeNode Clone()
{
var newRoot = new TreeNode();
DeepToTree(newRoot, this);
return newRoot;
}
private void DeepToTree(TreeNode newTreeNode, TreeNode existingTreeNode)
{
TreeNode newTn;
foreach (var tn in existingTreeNode.ChildrenNodes)
{
newTn = new TreeNode();
CopyChildren(newTn, tn);
newTreeNode.ChildrenNodes.Add(newTn);
}
}
private void CopyChildren(TreeNode parent, TreeNode needCopied)
{
TreeNode newTn;
foreach (var tn in needCopied.ChildrenNodes)
{
newTn = new TreeNode();
parent.ChildrenNodes.Add(newTn);
CopyChildren(newTn, tn);
}
}
}
}