boolean findTripod(Board board, int colour) {
        // For each hex that has three or more connecting hexes with same colour, add to queue.
        PriorityQueue<Hex> queue = new PriorityQueue<Hex>(board.numHexes);
        PriorityQueue<Hex> visited = new PriorityQueue<Hex>(board.numHexes);
        int i, j, n, numAdj;
        Hex currentHex;
        Hex[] neighbours;

        for (i=0; i<board.rows.length; i++) {
            for (j=0; j<board.rows[i].length; j++) {

                // Do the following if on colour
                if (board.rows[i][j].getColour() == colour) {
                    numAdj = 0;
                    currentHex = board.rows[i][j];
                    neighbours = currentHex.getAdjacent();

                    // Look at each of its neighbours to see if they are also on colour
                    for (n=0; n<neighbours.length; n++) {
                        // null check first
                        if (neighbours[n] != null) {
                            if (neighbours[n].getColour() == colour) {
                                numAdj++;
                            }
                        }
                    }

                    // If three or more adjacent on colour hexes, add to queue
                    if (numAdj >= 3) {
                        queue.add(currentHex);
                    }
                }
            }
        }

        // For each hex in the queue, we trace connecting hexes until we hit an edge or no more connectors.
        while (queue.size() != 0) {
            currentHex = queue.poll();
            neighbours = currentHex.getAdjacent();
            if (trace(currentHex, neighbours, colour, board, visited) >= 3) {
                return true;
            }
        }
        return false;
    }