У меня есть файл relations.json
, в котором отражена структура {id, node, parent, level}
, где:
Проблема: я прочитал достаточно много источников на обход дерева в глубину и везде приводятся примеры с node.left
и node.right
, то есть везде подразумевается, что у родителя всегда максимум 2-а дочерних узла. Такой вариант мне крайне не подходит потому, что у меня число дочерних нод для каждого узла может варьироваться. Я же застрял в попытках описать внутри рекурсии создание новых дочерних элементов.
Вопрос: как написать рекурсивный метод, в котором можно создавать новые дочерние объекты?
Код:
package Tree;
import com.google.gson.Gson;
import POJO.Relations;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
class Node
{
long id;
long node;
long parent;
long level;
Node left, right;
Node child;
public Node(long id, long node, long parent, long level) {
this.id = id;
this.node = node;
this.parent = parent;
this.level = level;
left = right = null;
}
}
class BinaryTree
{
// Root of Binary Tree
Node root;
BinaryTree()
{
root = null;
}
void printPostorder(Node node)
{
if (node == null)
return;
// first recur on left subtree
printPostorder(node.left);
// then recur on right subtree
printPostorder(node.right);
printPostorder(node.child);
// now deal with the node
System.out.print(node.id + " ");
}
void printPostorder() { printPostorder(root); }
public static void main(String[] args) {
BinaryTree tree = new BinaryTree();
tree.root = new Node(0, 0, 0, 0);
tree.root.left = new Node(1, 1, 71, 1);
tree.root.right = new Node(80, 12, 71, 1);
Gson gson = new Gson();
BufferedReader br_relations = null;
try {
br_relations = new BufferedReader(new FileReader("files/relations.json"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Relations[] relations = gson.fromJson(br_relations, Relations[].class);
for (Relations r : relations) {
tree.root.child = new Node(r.getId(),r.getNode(),r.getParent(),r.getLevel());
}
System.out.println("\nPostorder traversal of binary tree is ");
tree.printPostorder();
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Приветствую! Между клиентом и сервером через WebSocket как в синхронном, так и асинхронном режиме периодически возникает задержка пересылки...
В приложении на Android использую 10 кнопок и фокус при нажатии на кнопку
У меня в классе куча полей и каждый раз писать такого рода проверки кажется мне не правильным, вот: