What is the Runtime of this Solution

Hi Team,

Can someone please help me figure out the Runtime for this code ? Below is my solution for this problem :- https://leetcode.com/problems/output-contest-matches/description/

/**
*
*/
class Solution {
    public String findContestMatch(int n) {
        
        TreeSet<Node> nodes;
        
        if(n > 1 && (n&n-1) == 0) { //O(c)
            nodes = new TreeSet<>();    //O(c)
            
            for(int i = 0; i < n; i++) {    //O(n)
                nodes.add(new Node(i+1));   //O(c)
            }
            
            while(nodes.size() != 1){   //O(log(n))
                nodes = pairTeams(nodes);
            }
            
        } else {
            System.out.println("Invalid test data");
            
            return null;
        }
        
        return nodes.first() != null ? nodes.first().toString() : null; //O(c)
        
    }
    
    private TreeSet<Node> pairTeams(TreeSet<Node> nodes) {
        TreeSet<Node> resultNodes = null;
        
        if(nodes != null && nodes.size() > 0) {
            
            resultNodes = new TreeSet<Node>();
            
            while(nodes.size() > 0) {   //O(n/2)
                Node node1 = nodes.first(); //O(c)
                Node node2 = nodes.last();  //O(c)
                int value = node1.value < node2.value ? node1.value : node2.value;  //O(c)
                
                Node newNode = new Node(node1, node2, value);   //O(c)
                
                resultNodes.add(newNode);   //O(log(n/2))
                
                nodes.remove(node1);    //O(log(n))
                nodes.remove(node2);    //O(log(n))
            }
        }
        
        return resultNodes;
    }
    
    class Node implements Comparable {
        public Node left;
        public Node right;
        public int value;
        
        public Node(int value) {
            this.value = value;
        }
        
        public Node(Node left, Node right, int value) {
            this.value = value;
            this.left = left;
            this.right = right;
        }
        
        public int compareTo(Object obj) {
            Node node2 = (Node)obj;
            
            if(node2 == null) {
                return -1;
            }
            return this.value - node2.value;
        }
        
        public String toString() {
            if(left != null && right != null) {
                return "(" + left.toString() + "," + right.toString() + ")";
            } else {
                return String.valueOf(this.value);
            }
        }
    }    
}

Thanks,
Amit.
Comments (1)