2010-11-26 2 views
0

У меня есть плоский список, как показано ниже.Создайте структуру данных родителя/ребенка из простого списка

nodeA   
nodeB   
    nodeC   
    endnodeC 
    nodeD 
    endnodeD 
endnodeB 
endnodeA 

Есть ли способ создать родительскую структуру данных дочерних элементов в java как folliwng.

A    
    |    
    B    
/\    
C D  
+0

Что вы подразумеваете под словом «есть ли способ»? Я не думаю, что есть готовая функция, которая сделает это за вас. Но это, безусловно, возможно и легко рекурсивное программирование. Это на самом деле похоже на домашнюю проблему. Я не думаю, что кто-нибудь даст вам полное решение здесь, вместо этого вы должны попытаться добиться определенного прогресса и задать более конкретные вопросы. – emrea 2010-11-26 04:26:36

+0

Пожалуйста, пометьте это как домашнюю работу, если это так. Это действительно так. – 2010-11-26 05:26:08

ответ

0

Это бинарное дерево? Посмотрите на http://www.java2s.com/Code/Java/Collections-Data-Structure/BinaryTree.htm

+1

Вы должны прочитать вопрос более четко. Существуют конкретные условия, при которых должен быть создан новый ребенок. Это не похоже на двоичное дерево. Каждый раз, когда достигается endNodeX, вы возвращаетесь к родительскому. Потенциально каждый узел может иметь более двух детей. – 2010-11-26 05:23:48

3

предположить результат узла что-то вроде:

class Node { 
    Node parent; 
    // other data 
} 

код псевдо для генерации из вашего плоского списка (предположим, что список flatNodes находится в правильной структуре и пар):

Node currentNode; 
foreach (n in flatNodes) { 
    if (n is endnode) { 
    currentNode = currentNode.parent 
    } else { 
    Node newNode = createNodeBaseOnFlatNode(n); 
    newNode.parent=currentNode; 
    currentNode = newNode; 
    } 
} 
Смежные вопросы