2015-03-27 11 views
1

Я пытаюсь написать код Java для следующего рисунка. Где,Java n-node tree

если узел: 4 создаст следующие отдельные 4 дерева. Количество узлов в

LEVEL1 (yellow) : 1 node 
LEVEL2 (green) : n-1 node 
LEVEL3 (blue) : n-2 node 

см изображение для узла: 4

enter image description here

Другой способ, если узел: 5, то,

LEVEL1 (yellow) : 1 node 
LEVEL2 (green) : n-1 node 
LEVEL3 (blue) : n-2 node 

см изображение для узла: 5

enter image description here

И так далее. Заранее благодарим за помощь.

+0

Не против показывать код? –

+0

atleast опубликовать изображение, о котором вы говорите. – Techfist

+0

Просьба уточнить желаемый результат. В каждом дереве для каждого уровня должен быть один узел меньше, чем узлы предыдущего уровня, а допустимые метки узлов - те, которые можно найти на пути к корню подключенного компонента? Всегда ли ровно 3 лева? – Codor

ответ

1

Как это решить, что важно здесь. Начинайте сверху вниз и выработайте логику.

List<Tree> makeTrees(int n) { 
    List<Tree> trees = new ArrayList<>(); 

    for (int i = 0; i < n; ++i) { 
     Tree tree = makeYellow(n, i); 
     trees.add(tree); 
    } 
    return trees; 
} 

private Tree makeYellow(int n, int yellow) { 
    Tree tree = new Tree(); 
    Node node = new Node(yellow, Color.YELLOW); 
    tree.add(node); 
    for (int i = 0; i < n; ++i) { 
     if (i != yellow) { 
      Node green = makeGreen(n, yellow, i); 
      node.add(green); 
     } 
    } 
    return tree; 
} 

И так далее.

Как видите, в верхней части для желтых узлов достаточно простого. Вместо того, чтобы уже все подробно разобраться, представьте дальнейшее решение, позвоните по телефону makeGreen и определите, что он должен вернуть и какую информацию ему нужно.

Попробуйте найти узоры.

Такая домашняя работа лучше всего делается сама, чтобы тренировать решение таких головоломок и быть умственно вознагражденным.

+0

Большое спасибо за код инициативы. – azarazlan