Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ LeftRotate()

int System.Data.RBTree< K >.LeftRotate ( int root_id,
int x_id,
int mainTreeNode )
inlineprivate

Definition at line 456 of file RBTree.cs.

457 {
458 int num = Right(x_id);
459 SetRight(x_id, Left(num));
460 if (Left(num) != 0)
461 {
462 SetParent(Left(num), x_id);
463 }
464 SetParent(num, Parent(x_id));
465 if (Parent(x_id) == 0)
466 {
467 if (root_id == 0)
468 {
469 root = num;
470 }
471 else
472 {
473 SetNext(mainTreeNode, num);
474 SetKey(mainTreeNode, Key(num));
475 root_id = num;
476 }
477 }
478 else if (x_id == Left(Parent(x_id)))
479 {
480 SetLeft(Parent(x_id), num);
481 }
482 else
483 {
484 SetRight(Parent(x_id), num);
485 }
486 SetLeft(num, x_id);
487 SetParent(x_id, num);
488 if (x_id != 0)
489 {
491 }
492 if (num != 0)
493 {
494 SetSubTreeSize(num, SubTreeSize(Left(num)) + SubTreeSize(Right(num)) + ((Next(num) == 0) ? 1 : SubTreeSize(Next(num))));
495 }
496 return root_id;
497 }
K Key(int nodeId)
Definition RBTree.cs:1407
void SetNext(int nodeId, int nextNodeId)
Definition RBTree.cs:1351
void SetRight(int nodeId, int rightNodeId)
Definition RBTree.cs:1326
int SubTreeSize(int nodeId)
Definition RBTree.cs:1402
void SetLeft(int nodeId, int leftNodeId)
Definition RBTree.cs:1331
int Next(int nodeId)
Definition RBTree.cs:1397
void SetParent(int nodeId, int parentNodeId)
Definition RBTree.cs:1336
void SetSubTreeSize(int nodeId, int size)
Definition RBTree.cs:1356
void SetKey(int nodeId, K key)
Definition RBTree.cs:1346

References System.Data.RBTree< K >.Key(), System.Collections.Generic.Left, System.Data.RBTree< K >.Next(), System.Data.Parent, System.Data.Right, System.Data.RBTree< K >.root, System.Data.RBTree< K >.SetKey(), System.Data.RBTree< K >.SetLeft(), System.Data.RBTree< K >.SetNext(), System.Data.RBTree< K >.SetParent(), System.Data.RBTree< K >.SetRight(), System.Data.RBTree< K >.SetSubTreeSize(), and System.Data.RBTree< K >.SubTreeSize().

Referenced by System.Data.RBTree< K >.RBDeleteFixup(), and System.Data.RBTree< K >.RBInsert().