В этой статье описывается метод Java для печати всех путей бинарного дерева. Поделитесь этим для вашей ссылки, следующим образом:
вопрос:
Дайте двоичное дерево и распечатайте все пути.
Например, для следующего двоичного дерева все его пути:
8 -> 3 -> 1
8 -> 2 -> 6 -> 4
8 -> 3 -> 6 -> 7
8 -> 10 -> 14 -> 13
Идеи:
Начиная с корневого узла, поместите свое собственное значение в массив, а затем передайте этот массив своему детскому узлу. Детский узел также ставит свое собственное значение в этом массиве и передает его своему детскому узлу, пока этот узел не станет листовым узлом, а затем не распечатывает массив. Итак, нам нужно использовать рекурсию здесь.
Код:
/** Учитывая бинарное дерево, распечатывает все его корень-лиф-пары, по одному на строку. Использует рекурсивный помощник для выполнения работы.*/Public void printpaths (root узла, int n) {string [] path = new String [n]; printpaths (root, path, 0);}/** рекурсивный помощник PrintPaths-данный узел, и массив, содержащий путь от корневого узла до, но не включающего этот узел, распечатывает все пути корневого листа.*/private void printPaths (узло узло, String [] Path, int pathlen) {if node = null) возвращает; // Добавить этот узел к пути массива пути [pathlen ++] = node.value; // это лист, поэтому распечатайте путь, который привел к здесь, если (node.leftchild == null && node.rightchild == null) {printarray (pathlen); } else {// в противном случае пробуйте оба подтережав PrintPaths (node.leftchild, Pathlen); printpaths (node.rightchild, pathlen); }}/** Утилита, которая печатает строки из массива на одной строке.*/Private void printarray (string [] ints, int len) {for (int i = 0; i <len; i ++) {System.out.print (ints [i]+""); } System.out.println ();}Примечание. Вы можете использовать только массив + значение для печати требуемого пути. Если вы используете связанную структуру списка, такую как LinkedList, она не будет работать. Стоит проанализировать причины, это очень интересно.
Для получения дополнительной информации об алгоритмах Java, читатели, которые заинтересованы в этом сайте, могут просмотреть темы: «Учебное пособие по структуре данных Java и алгоритм», «Сводка операции Java Dom Node», «Сводка Java File и каталог
Я надеюсь, что эта статья будет полезна для всех Java Programming.