1: /** Makes a clone of this node and its subtrees.
2: @return The clone of the subtree rooted at this node. */
3: public Object clone()
4: {
5: BinaryNode<T> theCopy = null;
6: try
7: {
8: @SuppressWarnings("unchecked")
9: BinaryNode<T> temp = (BinaryNode<T>)super.clone();
10: theCopy = temp;
11: }
12: catch (CloneNotSupportedException e)
13: {
14: throw new Error("BinaryNode cannot clone: " + e.toString());
15: }
16:
17: theCopy.data = (T)data.clone();
18:
19: if (left != null)
20: theCopy.left = (BinaryNode<T>)left.clone();
21:
22: if (right != null)
23: theCopy.right = (BinaryNode<T>)right.clone();
24:
25: return theCopy;
26: } // end clone
27: // Version 4.0