Exemplo n.º 1
0
 public AVLTree(AVLNode root)
 {
     this.root = root;
 }
Exemplo n.º 2
0
 public void insert(int data)
 {
     root = insert(root, data);
 }
Exemplo n.º 3
0
 public void delete(AVLNode root, int value)
 {
     root = deleteR(root, value);
 }
Exemplo n.º 4
0
        public AVLNode deleteR(AVLNode root, int value)
        {
            if (root == null)
            {
                return(root);
            }

            AVLNode toCompare = new AVLNode(value, null, null);

            if (toCompare.compareTo(root) < 0)
            {
                root.setLeft(deleteR(root.getLeft(), value));
            }
            else if (toCompare.compareTo(root) > 0)
            {
                root.setRight(deleteR(root.getRight(), value));
            }
            else
            {
                if (root.getLeft() == null || root.getRight() == null)
                {
                    AVLNode temp = null;

                    if (temp == root.getLeft())
                    {
                        temp = root.getRight();
                    }
                    else
                    {
                        temp = root.getLeft();
                    }



                    if (temp == null)
                    {
                        temp = root;

                        root = null;
                    }
                    else
                    {
                        root = temp;
                    }
                }
                else
                {
                    AVLNode temp = minValueNode(root.getRight());

                    root.setData(temp.getData());

                    root.setRight(deleteR(root.getRight(), temp.getData()));
                }
            }



            if (root == null)
            {
                return(root);
            }

            root.setHeight(Math.Max(height(root.getLeft()), height(root.getRight())) + 1);

            int balanceFactor = BalanceFactor(root);

            if (balanceFactor < -1)
            {
                if (BalanceFactor(root.getRight()) > 0)
                {
                    root.setRight(rotateRight(root.getRight()));

                    return(rotateLeft(root));
                }
                else
                {
                    return(rotateLeft(root));
                }
            }
            else if (balanceFactor > 1)
            {
                if (BalanceFactor(root.getLeft()) < 0)
                {
                    root.setLeft(rotateLeft(root.getLeft()));

                    return(rotateRight(root));
                }
                else
                {
                    return(rotateRight(root));
                }
            }

            return(root);
        }
Exemplo n.º 5
0
 public AVLTree()
 {
     root = null;
 }
 public int compareTo(AVLNode o)
 {
     return(this.data.CompareTo(o.getData()));
 }
 public void setRight(AVLNode right)
 {
     this.right = right;
 }
 public void setLeft(AVLNode left)
 {
     this.left = left;
 }
 public AVLNode(int data)
 {
     this.data = data;
     left      = null;
     right     = null;
 }