private void RightFix()

in csharp/src/Containers/AvlTree.cs [978:1006]


		private void RightFix(Int32 NodeIndex, Int32 ParentIndex)
		{
			Entry node = _data[NodeIndex];

			Int32 leftHeight = node._left == _NO_ELEMENT ? 0 : _data[node._left]._height;
			Int32 rightHeight = node._right == _NO_ELEMENT ? 0 : _data[node._right]._height;
			if (leftHeight + 1 < rightHeight)
			{
				Entry right = _data[node._right];

				leftHeight = right._left == _NO_ELEMENT ? 0 : _data[right._left]._height;
				rightHeight = right._right == _NO_ELEMENT ? 0 : _data[right._right]._height;

				if (rightHeight < leftHeight)
					RotateRight(_data[_data[NodeIndex]._right]._left, _data[NodeIndex]._right, NodeIndex);

				RotateLeft(NodeIndex, _data[NodeIndex]._right, ParentIndex);
			}

			node = _data[NodeIndex];

			leftHeight = node._left == _NO_ELEMENT ? 0 : _data[node._left]._height;
			rightHeight = node._right == _NO_ELEMENT ? 0 : _data[node._right]._height;
			_data[NodeIndex]._height = 1 + (leftHeight > rightHeight ? leftHeight : rightHeight);

			_data[NodeIndex]._count = 1 + (node._left == _NO_ELEMENT ? 0 : _data[node._left]._count) +
			 (node._right == _NO_ELEMENT ? 0 : _data[node._right]._count);

		}