#include #include #include #include "tree.h" Tree::Tree() { rootPtr = 0; } Tree::~Tree() { Leaf *currentPtr = rootPtr, *tempPtr; while(currentPtr->downPtr != 0) currentPtr = currentPtr->downPtr; tempPtr = currentPtr; currentPtr = currentPtr->parentPtr; // currentPtr->downPtr = 0; delete tempPtr; tempPtr = currentPtr->diagPtr; // currentPtr->diagPtr = 0; delete tempPtr; currentPtr = currentPtr->parentPtr; tempPtr = currentPtr->downPtr; // currentPtr->downPtr = 0; delete tempPtr; while(currentPtr->diagPtr != 0) currentPtr = currentPtr->diagPtr; tempPtr = currentPtr; currentPtr = currentPtr->parentPtr; // currentPtr->diagPtr = 0; delete tempPtr; tempPtr = currentPtr; currentPtr = currentPtr->parentPtr; // currentPtr->diagPtr = 0; delete tempPtr; tempPtr = currentPtr; currentPtr = currentPtr->parentPtr; // currentPtr->downPtr = 0; delete tempPtr; while(currentPtr->diagPtr != 0) currentPtr = currentPtr->diagPtr; tempPtr = currentPtr; currentPtr = currentPtr->parentPtr; // currentPtr->diagPtr = 0; delete tempPtr; tempPtr = currentPtr->acrossPtr; // currentPtr->acrossPtr = 0; delete tempPtr; tempPtr = currentPtr; currentPtr = currentPtr->parentPtr; // currentPtr->diagPtr = 0; delete tempPtr; while(currentPtr->acrossPtr != 0) currentPtr = currentPtr->acrossPtr; tempPtr = currentPtr; currentPtr = currentPtr->parentPtr; // currentPtr->acrossPtr = 0; delete tempPtr; tempPtr = currentPtr; currentPtr = currentPtr->parentPtr; // currentPtr->acrossPtr = 0; delete tempPtr; tempPtr = currentPtr; currentPtr = currentPtr->parentPtr; // currentPtr->diagPtr = 0; delete tempPtr; while(currentPtr->acrossPtr != 0) currentPtr = currentPtr->acrossPtr; while(currentPtr != rootPtr) { tempPtr = currentPtr; currentPtr = currentPtr->parentPtr; // currentPtr->acrossPtr = 0; delete tempPtr; } tempPtr = rootPtr; delete tempPtr; tempPtr = rootPtr = currentPtr = 0; } int Tree::setPiece(const char piece, int col, int row) { Leaf *currentPtr = rootPtr; while(currentPtr->downPtr != 0) currentPtr = currentPtr->downPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; currentPtr = currentPtr->diagPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; while(currentPtr->diagPtr != 0) currentPtr = currentPtr->diagPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; while(currentPtr->diagPtr != 0) currentPtr = currentPtr->diagPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; currentPtr = currentPtr->acrossPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } while(currentPtr->acrossPtr != 0) currentPtr = currentPtr->acrossPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; while(currentPtr->acrossPtr != 0) currentPtr = currentPtr->acrossPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } currentPtr = currentPtr->parentPtr; if(currentPtr->col == col && currentPtr->row == row) { currentPtr->piece = piece; return 1; } return 0; }