2010-03-28 2 views
0

У меня есть двоичное дерево функций и значений терминалов. Я бы хотел напечатать это дерево, поскольку будет представлено представление lisp!Как печатать двоичное дерево функций/терминалов, как заявление lisp?

Например, дерево только с корнем «+» и терминалами «2» и 4" будет читать (+ (2 4)).

+0

Есть ли вероятность опубликовать какой-то код того, что у вас есть? –

ответ

1

Вам нужно сделать обход бинарного . дерево так что если у вас есть дерево:

 + 
    5  - 
     3 2 

вы хотели бы посетить +, 5, -, 3, 2, в таком порядке вы можете сделать это рекурсивно следующим образом (предполагается, что ваши узлы имеют значение поля. , слева и справа):

public void preorder() { 
    if (leaf == null && right == null) 
     System.out.println(value); 
    else { 
     System.out.println("("); 
     System.out.println(value); 
     if(left != null) left.preorder(); 
     if(right != null) right.preorder(); 
     System.out.println(")"); 
    } 
    } 

Обратите внимание, что вы просто посещаете текущий узел, затем левый дочерний элемент, а затем правый.

 Смежные вопросы

  • Нет связанных вопросов^_^