Exemplo n.º 1
0
        public void Insert(T value)
        {
            if (value == null)
            {
                throw new ArgumentNullException("Cannot insert null value!");
            }

            this.root = Insert(value, null, root);
        }
Exemplo n.º 2
0
        private void Remove(BineryTreeNode <T> nodeToDelete)
        {
            if (nodeToDelete.leftChild != null && nodeToDelete.rightChild != null)
            {
                BineryTreeNode <T> replacement = nodeToDelete.rightChild;

                while (replacement.leftChild != null)
                {
                    replacement = replacement.leftChild;
                }

                nodeToDelete.value = replacement.value;
                nodeToDelete       = replacement;
            }

            BineryTreeNode <T> theChild = nodeToDelete.leftChild != null ? nodeToDelete.leftChild : nodeToDelete.rightChild;

            if (theChild != null)
            {
                theChild.parent = nodeToDelete.parent;

                if (nodeToDelete.parent == null)
                {
                    root = theChild;
                }
                else
                {
                    if (nodeToDelete.parent.leftChild == nodeToDelete)
                    {
                        nodeToDelete.parent.leftChild = theChild;
                    }
                    else
                    {
                        nodeToDelete.parent.rightChild = theChild;
                    }
                }
            }
            else
            {
                if (nodeToDelete.parent == null)
                {
                    root = null;
                }
                else
                {
                    if (nodeToDelete.parent.leftChild == nodeToDelete)
                    {
                        nodeToDelete.parent.leftChild = null;
                    }
                    else
                    {
                        nodeToDelete.parent.rightChild = null;
                    }
                }
            }
        }
Exemplo n.º 3
0
        public void Remove(T value)
        {
            BineryTreeNode <T> nodeToDelete = Find(value);

            if (nodeToDelete == null)
            {
                return;
            }

            Remove(nodeToDelete);
        }
Exemplo n.º 4
0
        public BineryTreeNode(T value)
        {
            if (value == null)
            {
                throw new ArgumentNullException("Cannot insert null values!");
            }

            this.value      = value;
            this.parent     = null;
            this.leftChild  = null;
            this.rightChild = null;
        }
Exemplo n.º 5
0
        private BineryTreeNode <T> Insert(T value, BineryTreeNode <T> parentNode, BineryTreeNode <T> node)
        {
            if (node == null)
            {
                node        = new BineryTreeNode <T>(value);
                node.parent = parentNode;
            }
            else
            {
                int compareTo = value.CompareTo(node.value);

                if (compareTo < 0)
                {
                    node.leftChild = Insert(value, node, node.leftChild);
                }
                else if (compareTo > 0)
                {
                    node.rightChild = Insert(value, node, node.rightChild);
                }
            }

            return(node);
        }
Exemplo n.º 6
0
        public BineryTreeNode <T> Find(T value)
        {
            BineryTreeNode <T> node = this.root;

            while (node != null)
            {
                int compareTo = value.CompareTo(node.value);

                if (compareTo < 0)
                {
                    node = node.leftChild;
                }
                else if (compareTo > 0)
                {
                    node = node.rightChild;
                }
                else
                {
                    break;
                }
            }

            return(node);
        }
Exemplo n.º 7
0
 public BinerySearchTree()
 {
     this.root = null;
 }
Exemplo n.º 8
0
 public int CompareTo(BineryTreeNode <T> other)
 {
     return(this.value.CompareTo(other.value));
 }
Exemplo n.º 9
0
        public override bool Equals(object obj)
        {
            BineryTreeNode <T> other = (BineryTreeNode <T>)obj;

            return(this.CompareTo(other) == 0);
        }