1/*
2 * Copyright (C) 2011 The Guava Authors
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5 * in compliance with the License. You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the
10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
11 * express or implied. See the License for the specific language governing permissions and
12 * limitations under the License.
13 */
14
15package com.google.common.collect;
16
17import com.google.common.annotations.GwtCompatible;
18
19import javax.annotation.Nullable;
20
21/**
22 * An integer-valued function on binary search tree nodes that adds between nodes.
23 *
24 * <p>The value of individual entries must fit into an {@code int}, but the value of an entire
25 * tree can require a {@code long}.
26 *
27 * @author Louis Wasserman
28 */
29@GwtCompatible
30interface BstAggregate<N extends BstNode<?, N>> {
31  /**
32   * The total value on an entire subtree. Must be equal to the sum of the {@link #entryValue
33   * entryValue} of this node and all its descendants.
34   */
35  long treeValue(@Nullable N tree);
36
37  /**
38   * The value on a single entry, ignoring its descendants.
39   */
40  int entryValue(N entry);
41}
42