static StringBuilder s = new StringBuilder();
    static void core(String nodes) {
    	// 叶子节点
    	if ("".equals(nodes)) {
    		return;
    	}
    	// 第一个是根节点
    	char root = nodes.charAt(0);
    	if (nodes.length() == 1) {
    		s.append(root);
    		return;
    	}
    	// 2(3,4(,5))   ,  6(7,)
    	// 后面一个肯定是去除 一对()
    	nodes = nodes.substring(2,nodes.length() - 1);
    	// 找到左子树的范围
    	int cur = 1;
    	int find = -1;
    	if (nodes.charAt(0) == ',') {
    		// 提前结束左子树查找
    		cur = 0;
    		find = 0;
    	}else if(nodes.charAt(1) == ',') {
    		cur = 0;
    		find = 1;
    	}
    	if (find == -1) {
    		// 找到第一个 (
        		while (nodes.charAt(cur) != '(') {
            		cur++;
            	}
        	// 记录( - )
        	int leftSubRight = 1;
        	do {
        		cur++;
        		if (nodes.charAt(cur) == '(') {
        			leftSubRight++;
        		}else if(nodes.charAt(cur) == ')') {
        			leftSubRight--;
        		}
        	}while(leftSubRight != 0);
    	}
    	// [0-cur]为左子树范围
    	// 处理左子树
    	if (find != 0)
    		core(nodes.substring(0,Math.min(nodes.length(), cur + 1)));
    	// 根
    	s.append(root);
    	// 处理右子树
    	core(nodes.substring(find == 0 ? 1 : Math.min(nodes.length(), cur + 2),nodes.length()));
    }
	
	static String solution(String input) {
		core(input);
		return s.toString();
    }
最后四分钟勉强凑出来