[英]How to return a string with a Breadth First Order traversal of a binary search tree?
[英]Breadth first traversal of a binary tree in Java? [closed]
我正在嘗試為 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();
}
嘗試這個
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);
}
}
}
用 java 8 句法
void bfsTraverse(Node node, Queue<Node> tq) {
if (node == null) {
return;
}
System.out.print(" " + node.value);
Optional.ofNullable(node.left).ifPresent(tq::add);
Optional.ofNullable(node.right).ifPresent(tq::add);
bfsTraverse(tq.poll(), tq);
}
然后用根節點和一個新的 object 的 Queue 接口實現調用這個方法
bfsTraverse(root, new LinkedList<>());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.