2015-03-20 2 views
1

Я пытаюсь реализовать метод первого обхода ширины для двоичных деревьев в Java. Здесь я привел несколько примеров, и никому это не помогло.Ширина первого обхода двоичного дерева в Java?

public String breadthFirstTraverse(){ 
    MyQueue<BinaryNode<T>> travQ = new MyQueue<BinaryNode<T>>(); 
    MyQueue<T> mq = new MyQueue<T>(); 
    if(root == null){ 
     return ""; 
    } 
    mq.enqueue(root.getData()); 
    travQ.enqueue(root); 
    BinaryNode<T> node = root; 
    while(travQ.size() != 0){ 
     node = travQ.dequeue(); 
     if (node.getLeftNode().getData() != nullSymbol){ 
      mq.enqueue(node.getLeftNode().getData()); 
      travQ.enqueue(node.getLeftNode()); 
     } 
     if (node.getRightNode().getData() != nullSymbol){ 
      mq.enqueue(node.getRightNode().getData()); 
      travQ.enqueue(node.getRightNode()); 
     } 
    } 
    return mq.toString(); 
} 
+0

Пример кода Java: [A поиска в ширину дерева] (http://cs.nyu.edu/courses/spring05/V22.0102-003 /mar23/Breadth.java) – mins

ответ

0

Тест

public static void printBFS(TreeNode root){ 
    Deque<TreeNode> a=new ArrayDeque<TreeNode>(); 
    a.addLast(root); 
    while(!a.isEmpty()){ 
     TreeNode t=a.removeFirst(); 
     System.out.println(t.payload); 
     if(t.left!=null){ 
      a.addLast(t.left); 
     } 
     if(t.right!=null){ 
      a.addLast(t.right); 

     } 
    } 
} 
+0

Возможно, вы захотите правильно отредактировать свой код, чтобы все это соответствовало одному серому блоку – EdmDroid

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