您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

其他 2022/1/1 18:39:58 有430人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶