2017-09-23 23:43:08 -07:00
|
|
|
package org.nwapw.abacus.tree.nodes
|
|
|
|
|
|
|
|
import org.nwapw.abacus.tree.Reducer
|
2017-08-25 18:42:41 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* A tree node that represents a binary tree value operator.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* The tree value operators operate on trees, and so this
|
|
|
|
* node does not reduce its children. It is up to the implementation to handle
|
|
|
|
* reduction.
|
|
|
|
* @param operation the operation this node performs.
|
|
|
|
* @param left the left child of this node.
|
|
|
|
* @param right the right child of this node.
|
|
|
|
*/
|
2017-09-07 12:31:40 -07:00
|
|
|
class TreeValueBinaryNode(operation: String, left: TreeNode, right: TreeNode)
|
2017-08-25 18:42:41 -07:00
|
|
|
: BinaryNode(operation, left, right) {
|
|
|
|
|
2017-09-07 12:53:12 -07:00
|
|
|
override fun <T : Any> reduce(reducer: Reducer<T>): T {
|
2017-08-25 18:42:41 -07:00
|
|
|
return reducer.reduceNode(this)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|