Cell* treeToListHelp(Node* T, Cell* L) { if(T == NULL) return L; else { Cell* A = treeToListHelp(T->right, L); Cell* B = new Cell(T->item, A); return treeToListHelp(T->left, B); } } Cell* treeToList(Node* T) { return treeToListHelp(T, NULL); }
Remark. If you worked this out using an example, good. If you tried to work this out without looking at an example, what were you thinking?
Suppose that L is list [100, 115] and T is tree
Then treeToListHelp(T, L) should return list [25, 40, 60, 62, 65, 70, 80, 100, 115]. To get that, first compute list A = treeToListHelp(T->right, L). Assuming that treeToListHelp works correctly, you should find that A = [62, 65, 70, 80, 100, 116]. Now create list B by adding just T->item (60) to the front of A. So B = [60, 62, 65, 70, 80, 100, 116]. Finally, compute treeToListHelp(T->left, B), which (assuming treeToListHelp works correctly) should produce list [25, 40, 60, 62, 65, 70, 80, 100, 115].