I'm currently updating my pif_DataStructures library, and adding more data structures. I currently have a tree type, and when I delete a given node on tree, the operation effectively prunes the branch from the point of the node and then deletes the resultant tree, pretty much destroying the branch. I don't believe this is the best way to go about it, and I can't really think of a general-case algorithm for doing so. My attempts at Google have failed me.
Note that any suggested algorithms would work for both an n-ary tree and a tree that can have an arbitrary number of child nodes. I'm aware how to implement a deletion in a heap and binary search tree and etc., but not how to do so in an unordered tree.