【剑指offer】面试题32:从上到下打印二叉树(java)
发布日期:2021-04-30 21:05:02 浏览次数:94 分类:精选文章

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

按层次打印二叉树的解决方案

要实现按层次打印二叉树,可以利用队列数据结构来控制节点的访问顺序。具体步骤如下:

  • 初始化一个队列,将二叉树的根节点加入队列。
  • while队列不为空,循环处理:
    • 取出队列中的当前节点,打印其值。
    • 如果当前节点有左孩子,将左孩子加入队列。
    • 如果当前节点有右孩子,将右孩子加入队列。
  • 这种方法确保每层的节点按从左到右的顺序被打印。


    按之字形打印二叉树的解决方案

    为了实现按之字形打印二叉树(第一行从左到右,第二行从右到左,第三行从左到右,依此类推),可以采用双栈方法:

  • 初始化两个栈,stack1用于记录当前层的节点,stack2用于记录下一层的节点。
  • 将根节点加入stack1
  • whilestack1stack2不为空,循环处理:
    • 创建一个新的列表currentLevel,用于记录当前层的节点值。
    • whilestack1不为空:
      • 取出stack1的顶部节点node,将其值加入currentLevel
      • 如果节点有左孩子,将左孩子加入stack2
      • 如果节点有右孩子,将右孩子加入stack2
    • whilestack2不为空:
      • 取出stack2的顶部节点node,将其值加入currentLevel
      • 如果节点有右孩子,将右孩子加入stack1
      • 如果节点有左孩子,将左孩子加入stack1
    • currentLevel加入最终的结果列表。
  • 最终遍历结果列表,按照层级顺序打印每个节点的值。
  • 这种方法确保每层的节点按照指定的方向被打印。

    上一篇:【Notes10】Linux开发环境,Linux/vi命令
    下一篇:Leetcode--448. 找到所有数组中消失的数字

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2026年06月04日 19时34分39秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章