Como criar uma árvore dinâmica?

Estou com problemas para implementar uma estrutura de árvore dinâmica usando a implementação da árvore de primefaces. Na mostra fornecida pelo primeface, a estrutura do código é como abaixo. No entanto, isso é muito estático. Estou tentando descobrir como fazer isso com os dados obtidos em um banco de dados, onde a profundidade da árvore seria desconhecida no momento da compilaçã

Estou pensando que provavelmente preciso de algum método recursivo para implementar isso, mas não consigo entender como seria a implementaçã

Alguma ideia

Abaixo é o código de exemplo do primefaces

private TreeNode root;
private TreeNode selectedNode;

public TreeBean() {
    root = new DefaultTreeNode("Root", null);
    TreeNode node0 = new DefaultTreeNode("Node 0", root);
    TreeNode node1 = new DefaultTreeNode("Node 1", root);
    TreeNode node2 = new DefaultTreeNode("Node 2", root);

    TreeNode node00 = new DefaultTreeNode("Node 0.0", node0);
    TreeNode node01 = new DefaultTreeNode("Node 0.1", node0);

    TreeNode node10 = new DefaultTreeNode("Node 1.0", node1);
    TreeNode node11 = new DefaultTreeNode("Node 1.1", node1);

    TreeNode node000 = new DefaultTreeNode("Node 0.0.0", node00);
    TreeNode node001 = new DefaultTreeNode("Node 0.0.1", node00);
    TreeNode node010 = new DefaultTreeNode("Node 0.1.0", node01);

    TreeNode node100 = new DefaultTreeNode("Node 1.0.0", node10);
}

questionAnswers(2)

yourAnswerToTheQuestion