/***************************************************************** * bstChain.cpp * implementation of BST chains *****************************************************************/ #include "chain.h" bstChain::bstChain(link *linkList, int linkNum) : chain(linkList, linkNum) { // table size bigger than linkNum for BSTs initTable(linkNum + 2); } /***************************************************************** * componentWeight add the sum of all frequencies from i+1 to * k-1, inclusive. *****************************************************************/ double bstChain::componentWeight (int i, int j, int k) { double sum= 0; for (int h= i + 1; h < k; h++) { sum += linkList[h].y; } return sum; } /***************************************************************** * bstChain::minPartition acts as a front end to * chain::minPartition ****************************************************************/ componentNode *bstChain::minPartition(int linkNum) { return chain::minPartition(-1, linkNum); } /* indices are shifted */ int bstChain::getMCTSplit(int i, int k) { return minCostTable[i+1][k+1].j; } int bstChain::setMCTSplit(int i, int k, int j) { return minCostTable[i+1][k+1].j = j; } double bstChain::getMCTValue(int i, int k) { return minCostTable[i+1][k+1].cost; } double bstChain::setMCTValue(int i, int k, double d) { return minCostTable[i+1][k+1].cost = d; }