逐層從左至右訪問節點,不使用遞迴,改用佇列 (Queue) 輔助。
public void LevelOrder() // 寬度優先遍歷
{
Queue queue = new Queue();
queue.Enqueue(_head); // 根節點入佇列
while (queue.Count > 0)
{
Node node = (Node)queue.Dequeue(); // 出佇列
Console.Write(node.ToString()); // 訪問
if (node.Left != null) queue.Enqueue(node.Left);
if (node.Right != null) queue.Enqueue(node.Right);
}
}
var bTree = new BinaryTree("ABCDE#F"); // # 表空節點
bTree.LevelOrder();
// 輸出: A B C D E F
遍歷順序與二元樹循序儲存陣列索引順序一致。