CIT 594 Examples for Assignment 3 (Recursions) Spring 2008, David Matuszek |

In case you are having trouble understanding what the assigned methods are supposed to do, I hope these examples will help.

Suppose you have the following binary tree:

and suppose the `BinaryTree`

variable named `root`

refers to
the topmost node of this binary tree. Then:

Method call | Returned value |
---|---|

`root.leftmostDescendant()` |
`[*|"F"|*]` |

`root.rightmostDescendant()` |
`[*|"C"|*]` |

`root.numberOfNodes()` |
`11` |

`root.depth()` |
`5` |

`root.containsEqualValue("G")` |
`true` |

`root.containsSameValue("G")` |
`true` if the string `"G"` in the binary tree is
the same (`==` ) String "G" that is given as a
parameter; `false` if they are in different memory
locations, even if they are `equals()` to each other. |

`root.leaves()` |
The Set `{ [*|"K"|*], [*|"I"|*], [*|"J"|*] }` |

`root.valuesOf()` |
The Set ```
{ "A", "B", "C", "D", "E", "F",
"G", "H", "I", "J", "K" }
``` |

`root.fringe()` |
The list `[ "K", "I", "J" ]` , with values in that order. |

`root.copy()` |
A duplicate of the binary tree `root` , with all new nodes. |

```
anotherTree =
root.reverse()
``` |
A new `BinaryTree` , with all new nodes, that looks like this: |

`root.reverseInPlace()` |
Same picture as the one immediately above, but no new BinaryTree nodes
are created. Instead, the original tree is modified by swapping the contents
of the `leftChild` and `rightChild` references. |