栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从顶部开始逐级打印出二叉树中的数据?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从顶部开始逐级打印出二叉树中的数据?

逐级遍历称为广度优先遍历。使用队列是执行此操作的正确方法。如果要进行深度优先遍历,则可以使用堆栈。

您拥有它的方式并不是很标准。这应该是这样。

public Void BFS()    {       Queue q = new Queue(); q.Enqueue(root);//You don't need to write the root here, it will be written in the loop while (q.count > 0) {    Node n = q.DeQueue();    Console.Writeln(n.Value); //only write the value when you dequeue it    if (n.left !=null)    {        q.EnQueue(n.left);//enqueue the left child    }    if (n.right !=null)    {       q.EnQueue(n.right);//enque the right child    } }}

编辑

这是起作用的算法。假设您有一棵这样的树:

     1    /    2   3  /   /  4   5   6

首先,将根(1)排队。然后进入循环。队列(1)中的第一项出队并打印。1的孩子从左到右入队,队列现在包含{2,3}返回循环开始队列(2)中的第一个项目出队并打印2的孩子从左到右入队,队列现在包含{3, 4}回到循环开始…

队列将在每个循环中包含这些值

1:{1}

2:{2,3}

3:{3,4}

4:{4、5、6}

5:{5,6}

6:{6}

7:{} //空,循环终止

输出:

1个

2

3

4

5

6



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639241.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号