private void LeftFix()

in csharp/src/Containers/AvlTree.cs [948:976]


		private void LeftFix(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 > rightHeight + 1)
			{
				Entry left = _data[node._left];

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

				if (rightHeight > leftHeight)
					RotateLeft(node._left, _data[node._left]._right, NodeIndex);

				RotateRight(_data[NodeIndex]._left, NodeIndex, 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);
		}