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

◆ RightRotate()

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

Definition at line 499 of file RBTree.cs.

500 {
501 int num = Left(x_id);
502 SetLeft(x_id, Right(num));
503 if (Right(num) != 0)
504 {
505 SetParent(Right(num), x_id);
506 }
507 SetParent(num, Parent(x_id));
508 if (Parent(x_id) == 0)
509 {
510 if (root_id == 0)
511 {
512 root = num;
513 }
514 else
515 {
516 SetNext(mainTreeNode, num);
517 SetKey(mainTreeNode, Key(num));
518 root_id = num;
519 }
520 }
521 else if (x_id == Left(Parent(x_id)))
522 {
523 SetLeft(Parent(x_id), num);
524 }
525 else
526 {
527 SetRight(Parent(x_id), num);
528 }
529 SetRight(num, x_id);
530 SetParent(x_id, num);
531 if (x_id != 0)
532 {
534 }
535 if (num != 0)
536 {
537 SetSubTreeSize(num, SubTreeSize(Left(num)) + SubTreeSize(Right(num)) + ((Next(num) == 0) ? 1 : SubTreeSize(Next(num))));
538 }
539 return root_id;
540 }
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().