【剑指offer】面试题32:从上到下打印二叉树(java)
初始化一个队列,将二叉树的根节点加入队列。 while队列不为空,循环处理:
初始化两个栈, 将根节点加入 while 最终遍历结果列表,按照层级顺序打印每个节点的值。
发布日期:2021-04-30 21:05:02
浏览次数:94
分类:精选文章
本文共 633 字,大约阅读时间需要 2 分钟。
按层次打印二叉树的解决方案
要实现按层次打印二叉树,可以利用队列数据结构来控制节点的访问顺序。具体步骤如下:
- 取出队列中的当前节点,打印其值。
- 如果当前节点有左孩子,将左孩子加入队列。
- 如果当前节点有右孩子,将右孩子加入队列。
这种方法确保每层的节点按从左到右的顺序被打印。
按之字形打印二叉树的解决方案
为了实现按之字形打印二叉树(第一行从左到右,第二行从右到左,第三行从左到右,依此类推),可以采用双栈方法:
stack1用于记录当前层的节点,stack2用于记录下一层的节点。stack1。stack1或stack2不为空,循环处理: - 创建一个新的列表
currentLevel,用于记录当前层的节点值。 - while
stack1不为空:- 取出
stack1的顶部节点node,将其值加入currentLevel。 - 如果节点有左孩子,将左孩子加入
stack2。 - 如果节点有右孩子,将右孩子加入
stack2。
- 取出
- while
stack2不为空:- 取出
stack2的顶部节点node,将其值加入currentLevel。 - 如果节点有右孩子,将右孩子加入
stack1。 - 如果节点有左孩子,将左孩子加入
stack1。
- 取出
- 将
currentLevel加入最终的结果列表。
这种方法确保每层的节点按照指定的方向被打印。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2026年06月04日 19时34分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!