Книга за алгоритми

Реших да си обогатя личната библиотека с още някоя книга за програмиране. Тъй като в последно време ме интересуваха най-много алгоритмите и структурите от данни, реших да си купя точно такава книга. Набързо прегледах книгите на български и попаднах на книгата “Програмиране = ++Алгоритми” на Преслав Наков и Панайот Добриков, която вече 1 път ми бяха препоръчали. Съдържа изключително богата информация за най-често срещани алгоритми и структури от данни (над 600 страници). Закупих си я за 33.00 лв от книжарница “АБВ”. Силно я препоръчвам на хората занимаващи се с програмиране, защото алгоритмите са в основата на всичко – ако не ги знаете, както се казва “ще си останете занаятчии”.

Обхождане на двоично дърво в Java

Как се реализира двоично дърво можете да видите в книгата на Светлин Наков, а ето как да се обходи по три начина като 2 не са реализирани в книгата.
Съответно ЛДК (Ляво-Корен-Дясно/Pre-order), КЛД (Корен-Ляво-Дясно/In-order), ЛДК (Ляво-Дясно-Корен/Post-order)

public void printPreOrder(BinaryTreeNode<T> root) {
if (root == null) {
return;
}
printPreOrder(root.getLeftChild());

System.out.print(root.value + " ");

printPreOrder(root.getRightChild());
}

public void printPreOrder() {
printPreOrder(this.root);
}

public void printInOrder(BinaryTreeNode<T> root) {
if (root == null) {
return;
}
System.out.print(root.value + " ");

printInOrder(root.getLeftChild());

printInOrder(root.getRightChild());
}

public void printInOrder() {
printInOrder(this.root);
}

public void printPostOrder(BinaryTreeNode<T> root) {
if (root == null) {
return;
}
printPostOrder(root.getLeftChild());
if (root.leftChild != null) {
System.out.print(root.leftChild.value + " ");
}
if (root.rightChild != null) {
if (root.rightChild.leftChild != null) {
printPostOrder(root.rightChild);
}
System.out.print(root.rightChild.value + " ");
}
}

public void printPostOrder() {
printPostOrder(this.root);
System.out.println(this.root.value);
}