testAvlTreeContains() {
    const tree = new AvlTree();
    const values = ['bill', 'blake', 'elliot', 'jacob', 'john', 'myles', 'ted'];

    // Insert strings into tree out of order
    tree.add('frodo');
    tree.add(values[4]);
    tree.add(values[3]);
    tree.add(values[0]);
    tree.add(values[6]);
    tree.add('samwise');
    tree.add(values[5]);
    tree.add(values[1]);
    tree.add(values[2]);
    tree.add('pippin');

    // Remove strings from tree
    assertEquals(tree.remove('samwise'), 'samwise');
    assertEquals(tree.remove('pippin'), 'pippin');
    assertEquals(tree.remove('frodo'), 'frodo');

    for (let i = 0; i < values.length; i += 1) {
      assertTrue(tree.contains(values[i]));
    }
    assertFalse(tree.contains('samwise'));
    assertFalse(tree.contains('pippin'));
    assertFalse(tree.contains('frodo'));
  }
This test verifies that we can insert values into and remove values from
the AvlTree and have its contains method correctly determine the values it
is contains.