您的位置:首页 > 其它

二叉树(2)层次遍历

2016-04-05 11:21 246 查看
层次遍历的问题如下:



层次遍历的打印结果应该是:

1 2 3 4 5 6 7 8 9 10 11

思路:

利用一个队列来存储二叉树的“层”状结构(用【5】来表示值为5的二叉树节点):

(1)将根节点放入该空队列。队列为:【1】

(2)打印根节点【1】的值,将该根节点的左右孩子放入队列的末尾。弹出根节点。队列为【2】【3】

(3)打印队列的第一个元素,即根节点的左孩子【2】,并将该节点的左右孩子放入队列的末尾,弹出【2】。队列为【3】【4】【5】

(4)打印队列的第一个元素【3】,并将该节点的左右孩子放入队列的末尾,弹出【3】。队列为【4】【5】【6】【7】

代码如下:

public void levelorderTraverse(BTreeNode node = null)
{
if (node == null)
node = head;
if (node == null)
Console.WriteLine("empty tree");

Queue<BTreeNode> queue = new Queue<BTreeNode>();
queue.Enqueue(head);

while(queue.Count>0)
{
Console.WriteLine(queue.First().data);
if (queue.First().lChild != null) queue.Enqueue(queue.First().lChild);
if (queue.First().rChild != null) queue.Enqueue(queue.First().rChild);
queue.Dequeue();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: