public void InsertBalancedTree(BalancedTree <T> tree)
        {
            List <T> list = new List <T>();

            ConvertToList(tree.Root, ref list);

            foreach (var item in list)
            {
                this.Root = Insert(this.Root, item);
            }
        }
Пример #2
0
        public BalancedTree <T> CopyBalancedTree()
        {
            BalancedTree <T> newTree = new BalancedTree <T>();

            var nodesList = this.GetPreOrderList();

            foreach (var x in nodesList)
            {
                newTree.Root = newTree.Insert(newTree.Root, x);
            }

            return(newTree);
        }
Пример #3
0
        public bool Equals(BalancedTree <T> tree)
        {
            if (tree == null)
            {
                return(false);
            }

            if (this == tree)
            {
                return(true);
            }

            var thisListShape  = this.GetPreOrderList();
            var otherListShape = tree.GetPreOrderList();

            return(thisListShape.SequenceEqual(otherListShape));
        }
Пример #4
0
        public BalancedTree <T> DeleteEvenElement()
        {
            if (typeof(T) != typeof(int))
            {
                throw new Exception("Unsupported operation");
            }

            var nodesList = new List <T>();

            ConvertToList(this.Root, ref nodesList);
            var toDelete = nodesList.Where(x => (int)Convert.ChangeType(x, typeof(int)) % 2 == 1);


            var newList = new BalancedTree <T>();

            foreach (var x in toDelete)
            {
                newList.Root = newList.Insert(newList.Root, x);
            }

            return(newList);
        }
Пример #5
0
 public bool EqualsToTree(BalancedTree <T> tree)
 {
     return(EqualsToTreeUtils(this.Root, tree.Root));
 }