сохранение дерева в качестве предварительного заказа - PullRequest
2 голосов
/ 27 декабря 2010

Я создал двоичное дерево поиска с {2,5,3,4,9,1,7,...,100} цифрами.

как я могу сохранить его как preorder?спасибо

РЕДАКТИРОВАТЬ: Рассмотрим, у меня есть { 3,7,1,2} и сделать binary search tree с этими цифрами, и я хочу сохранить это дерево как preorder which is {3,1,2,7}

Ответы [ 2 ]

5 голосов
/ 27 декабря 2010

Смотрите здесь на грамотных программах :

public List<E> toList() {
    List<E> result = new ArrayList<E>();
    treeToList(root, result);
    return result;
}

private void treeToList(Node<E> node, List<E> goal) {
    if (node != null) {
        treeToList(node.left, goal);
        goal.add(node.value);
        treeToList(node.right, goal);
    }
}

Полная статья о двоичных деревьях и обходах PreOrder .

0 голосов
/ 29 декабря 2010

Следующий алгоритм печатает все узлы, по одному на строку, поддерева узла на v в двоичном дереве bt1.

  public static void preorderPrintLines (BinaryTree bt1, BNode v) { 
          String s = bt1.elementAt(v).toString(); 
                             //the class for the element in the node 
                             //needs to have a toString() method 
          System.out.println (s);   // subtree root element printed

           if (bt1.isInternal(v))   { 
              BNode       p;   
               if (bt1.hasLeft(v)) { 
                                  p  = bt1.left(v); 
                                 preorderPrintLines (bt1, p ); }   
                            //We have just traversed tree of left child 
              if (bt1.hasRight(v)) { 
                                  p  = bt1.right(v); 
                                  preorderPrintLines (bt1, p );  }    
                  //We have just traversed tree of right child 
              } //end if 
}

источник: здесь

...