private ExpressionTree _CopyTree() { if (IsLeaf()) { return(new ExpressionTree(Data, null, null, null, Root)); } return(new ExpressionTree(Data, null, LChild._CopyTree(), RChild?._CopyTree())); }
private ExpressionTree _CopyTree() { var cl = new Cloner(); if (IsLeaf()) { return(new ExpressionTree(cl.CloneExpr(Data), null, null, null, Root)); } return(new ExpressionTree(cl.CloneExpr(Data), null, LChild._CopyTree(), RChild?._CopyTree())); }
/** * Create a deep copy of the entire tree, and return the copy of the called node * * */ public ExpressionTree Copy() { Contract.Ensures(Contract.Result <ExpressionTree>() != null); if (Root == null) { SetRoot(); } var et = Root?._CopyTree(); et.SetParent(); et.SetRoot(); return(!et.IsLeaf() ? et.FindNode(this) : et); }