I am looking over Cracking the Code Interview and in this problem. I am supposed to find all paths in a binary tree that has the sum of a given number. I generally understand this code but I am wondering why the answer uses clone()
instead of creating a new object with new
?
public static void findSum(BinaryTreeNode root, int sum, ArrayList<Integer> buffer, int level) {
// done parsing or empty tree
if (root == null) {
return;
}
int tmp = sum;
buffer.add(root.value);
for (int i = level; i >= 1; i--) {
tmp -= buffer.get(i);
if (tmp == 0) {
print(buffer, i, level);
}
}
ArrayList<Integer> c1 = (ArrayList<Integer>) buffer.clone();
ArrayList<Integer> c2 = (ArrayList<Integer>) buffer.clone();
findSum(root.left, sum, c1, level + 1);
findSum(root.left, sum, c2, level + 1);
}
public static void print(ArrayList<Integer> bugger, int level, int i2) {
for (int i = level; i <= i2; i++) {
System.out.print(buffer.get(i) + " ");
}
System.out.println();
}