Algebraic data types: Difference between revisions

Content added Content deleted
Line 712:
| black(ColoredTree left, ColoredTree right);
// Count the number of redblack nodes
public int cntRedcntBlack(ColoredTree t){
int c = 0;
visit(t) {
case redblack(_,_): c += c + 1;
};
return c;
}
 
// Returns if a tree is balanced
public bool balance(ColoredTree t){
visit(t){
case black(a,b): if (cntBlack(a) == cntBlack(b)) true; else return false;
case red(a,b): if (cntBlack(a) == cntBlack(b)) true; else return false;
}
return true;
}
// Compute the sum of all integer leaves
public int addLeaves(ColoredTree t){
int c = 0;
visit(t) {
case leaf(int N): c = c += N;
};
return c;