template TNode * ReplacePtr(TNode * tree) // postcondition: returns poiner to tnod ethat will replace node tree // if node tree is deleted { if (tree == 0) return 0; else if (IsLeaf(tree)) return 0; else if (tree->left == 0) return tree->right; else if (tree->right == 0) return tree->left; else { tree = tree->right; // one to the right while (tree->left) { tree = tree->left; } return tree; } } void DoPrintPath(TNode * tree, Vector & path, int depth) // precondition: depth = depth of tree (# edges from root, root has depth 0) // path stores values on root-to-leaf path // postcondition: for each leaf of tree, print values on root-to-leaf path // one line of output for each leaf { if (tree != 0) { if (IsLeaf(tree)) { for(k=0; k < depth; k++) { cout << path[k] << " " } cout << tree->info << endl; } else { depth++; path[depth] = tree->info; DoPrintPath(tree->left,path,depth); DoPrintPath(tree->right,path,depth); } } } void PrintPath(TNode * tree) { if (tree != 0) { Vector path(200); path[0] = tree->info; DoPrintPath(tree,path,0); } }