private static void ZigZag(BinarySearchTreeNode node, BinarySearchTreeNode.SideOfParent side) { var p = node.Parent; var q = node.Parent.Parent; BinarySearchTreeNode.ReplaceChild(q.Parent, q, node); p.Parent = node; q.Parent = node; var nl = node.Left; var nr = node.Right; if (side == BinarySearchTreeNode.SideOfParent.LEFT) { node.Left = q; node.Right = p; p.Left = nr; q.Right = nl; } else { node.Left = p; node.Right = q; p.Right = nl; q.Left = nr; } }
private static void Zig(BinarySearchTreeNode node, BinarySearchTreeNode.SideOfParent side) { var p = node.Parent; BinarySearchTreeNode.ReplaceChild(p.Parent, p, node); if (side == BinarySearchTreeNode.SideOfParent.LEFT) { var nr = node.Right; node.Right = p; p.Left = nr; } else { var nl = node.Left; node.Left = p; p.Right = nl; } }