Exemple #1
0
 private void SwapNodeWithPredecessor(TreeNode predecessor, TreeNode find)
 {
     predecessor.RemoveFromParent();
     predecessor.Parent = find.Parent; // replace node with predecessor in the hierarchy
     // now predecessor get the removed node's left tree and right trees
     predecessor.LeftChild = find.LeftChild;
     if (predecessor.LeftChild != null)
     {
         predecessor.LeftChild.Parent = predecessor;
     }
     predecessor.RightChild = find.RightChild;
     if (predecessor.RightChild != null)
     {
         predecessor.RightChild.Parent = predecessor;
     }
     if (find.Equals(Root))
     {
         Root = predecessor;
     }
 }