Пример #1
0
        private ExpressionTree _CopyTree()
        {
            if (IsLeaf())
            {
                return(new ExpressionTree(Data, null, null, null, Root));
            }

            return(new ExpressionTree(Data, null, LChild._CopyTree(), RChild?._CopyTree()));
        }
Пример #2
0
        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()));
        }
Пример #3
0
        /**
         * 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);
        }