Похоже, у вас уже есть структура данных для хранения ваших двух значений типа int и строки (поскольку они отсортированы в списке массивов). Вы можете включить эту структуру данных в «узел дерева». Узел обычно имеет указатель ссылки на родительский узел (если он не является корневым узлом) и 2 дочерних узла.
Поскольку вы хотите, чтобы дерево было отсортировано, то на самом деле вам нужна специальная форма двоичного дерева, называемая кучей. Ссылка на страницу википедии Binary Heap ниже содержит алгоритм, чтобы показать, как сортировать двоичную кучу.
http://en.wikipedia.org/wiki/Binary_heap
Вот более общая информация о кучах и деревьях.
http://en.wikipedia.org/wiki/Binary_tree
http://en.wikipedia.org/wiki/Heap_(data_structure)
РЕДАКТИРОВАТЬ: Вам не нужно использовать буквенную древовидную структуру для хранения ваших данных в виде дерева. Вполне приемлемо построить дерево с использованием массива. Вместо использования ссылочных указателей (родительский и 1 или 2 дочерних узла) вы можете вычислить индекс в массиве. Каждый набор детей считается «строкой» в дереве. Корневой элемент находится в нулевой строке. Это двое детей на первом ряду. Дети корня дети на втором ряду, и так далее.
Используя этот шаблон, можно найти дочерние элементы любого узла, используя массив [2 * n + 1] и массив [2 * n + 2], где n - строка родительского узла. Родитель любого узла можно найти с помощью массива [floor ((n-1) / 2)].