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