199. 二叉树的右视图
发布日期:2021-05-28 05:49:46 浏览次数:30 分类:精选文章

本文共 602 字,大约阅读时间需要 2 分钟。

二叉树的遍历是一个常见的编程题目,其中一种常见的做法是按层次遍历,也就是广度优先遍历(BFS)。在我们的问题中,我们需要遍历二叉树的右侧节点的值,记录下来。解决方案可以通过队列来实现,但具体操作方式有两种不同的实现方法,我们可以根据需求选择。

第一种方法:使用vector记录每一层

这种方法的思路是,使用一个vector来存储每一层的节点值。由于是从左到右记录每一层的节点值,所以如果直接用这种方法可能会有一定的局限性。为了保证最后一个入队和出队的节点是最右边的,这种做法并不直接适用。

第二种方法:不使用vector记录每一层的节点值

这种方法利用了队列的特性,当队列的大小为0时,说明当前处理的节点是该层的右边节点,这样就可以将该节点的值添加到结果中。具体步骤如下:

  • 初始化一个队列,并将root节点入队。
  • 初始化一个结果vector来保存最终的右侧节点值。
  • 进入一个循环,持续处理队列中的节点,直到队列为空。
  • 在每次循环中,获取队列的顶部节点并处理:
    • 如果该节点的右边孩子不是空的,将右边孩子入队。
    • 如果该节点的左边孩子不是空的,将左边孩子入队。
  • 在处理完一个节点后,检查队列的大小:
    • 当队列的大小为0时,说明这个节点是当前序列的最后一个节点,将该节点的值加入结果vector。
  • 处理完成后,返回结果vector。
  • 这种方法的优点是代码简洁,避免了额外的vector空间分配,能够高效地解决问题。

    上一篇:codeforces 984 D. XOR-pyramid
    下一篇:Android远程桌面助手(B1332)之文件管理器

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2025年04月17日 11时10分49秒