コード例 #1
0
        public AVLTreeNode <int> LeftRotation(AVLTreeNode <int> Z)
        {
            AVLTreeNode <int> Y  = Z.GetRight();
            AVLTreeNode <int> T2 = Y.GetLeft();

            //Perform rotation
            Y.SetLeft(Z);
            Z.SetRight(T2);

            //Update Heights
            Z.SetHeight(Math.Max(Z.GetLeft().GetHeight(), Z.GetRight().GetHeight()) + 1);
            Y.SetHeight(Math.Max(Y.GetLeft().GetHeight(), Y.GetRight().GetHeight()) + 1);

            return(Y);
        }
コード例 #2
0
        public AVLTreeNode <int> RightLeftRotation(AVLTreeNode <int> Z)
        {
            AVLTreeRightRotation RightRotation = new AVLTreeRightRotation();
            AVLTreeLeftRotation  LeftRotation  = new AVLTreeLeftRotation();

            Z.SetRight(LeftRotation.LeftRotation(Z.GetRight()));
            return(RightRotation.RightRotation(Z));
        }