private MiniMaxNode Find(MiniMaxNode nodeToFind, Queue<MiniMaxNode> queue) { MiniMaxNode head = queue.poll(); if (head == null) return null; else if (head.equals(nodeToFind)) return head; else { List<MiniMaxNode> children = head.GetChildren(); for (MiniMaxNode child : children) queue.add(child); return Find(nodeToFind, queue); } }